@zauso-ai/capstan-react 0.1.2

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.
@@ -0,0 +1,9 @@
1
+ export declare function useAuth(): {
2
+ isAuthenticated: boolean;
3
+ type: "human" | "agent" | "anonymous";
4
+ userId?: string;
5
+ role?: string;
6
+ email?: string;
7
+ };
8
+ export declare function useParams(): Record<string, string>;
9
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO;;;;;;EAGtB;AAED,wBAAgB,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlD"}
package/dist/hooks.js ADDED
@@ -0,0 +1,11 @@
1
+ import { useContext } from "react";
2
+ import { PageContext } from "./loader.js";
3
+ export function useAuth() {
4
+ const ctx = useContext(PageContext);
5
+ return ctx.auth;
6
+ }
7
+ export function useParams() {
8
+ const ctx = useContext(PageContext);
9
+ return ctx.params;
10
+ }
11
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CapstanPageContext } from "./types.js";
2
+ export declare function hydrateCapstanPage(rootElement: Element, PageComponent: React.ComponentType, layouts: React.ComponentType[], data: CapstanPageContext): void;
3
+ //# sourceMappingURL=hydrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,EAC9B,IAAI,EAAE,kBAAkB,GACvB,IAAI,CAoBN"}
@@ -0,0 +1,22 @@
1
+ // Client-side hydration entry point.
2
+ // Used by the dev server / production build to hydrate a server-rendered page
3
+ // in the browser.
4
+ import { createElement } from "react";
5
+ import { hydrateRoot } from "react-dom/client";
6
+ import { PageContext } from "./loader.js";
7
+ import { OutletProvider } from "./layout.js";
8
+ export function hydrateCapstanPage(rootElement, PageComponent, layouts, data) {
9
+ // Build the component tree identically to SSR so React can hydrate cleanly
10
+ let content = createElement(PageComponent, {});
11
+ // Wrap in layouts from innermost to outermost
12
+ for (let i = layouts.length - 1; i >= 0; i--) {
13
+ const Layout = layouts[i];
14
+ content = createElement(OutletProvider, {
15
+ outlet: content,
16
+ children: createElement(Layout, {}),
17
+ });
18
+ }
19
+ const tree = createElement(PageContext.Provider, { value: data }, content);
20
+ hydrateRoot(rootElement, tree);
21
+ }
22
+ //# sourceMappingURL=hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../src/hydrate.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,8EAA8E;AAC9E,kBAAkB;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,UAAU,kBAAkB,CAChC,WAAoB,EACpB,aAAkC,EAClC,OAA8B,EAC9B,IAAwB;IAExB,2EAA2E;IAC3E,IAAI,OAAO,GAAiB,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAE7D,8CAA8C;IAC9C,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,OAAO,GAAG,aAAa,CAAC,cAAc,EAAE;YACtC,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CACxB,WAAW,CAAC,QAAQ,EACpB,EAAE,KAAK,EAAE,IAAI,EAAE,EACf,OAAO,CACR,CAAC;IAEF,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { renderPage } from "./ssr.js";
2
+ export { defineLoader, useLoaderData, PageContext } from "./loader.js";
3
+ export { Outlet, OutletProvider } from "./layout.js";
4
+ export { useAuth, useParams } from "./hooks.js";
5
+ export { hydrateCapstanPage } from "./hydrate.js";
6
+ export type { LoaderArgs, LoaderFunction, PageModule, LayoutModule, RenderPageOptions, RenderResult, CapstanPageContext, } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { renderPage } from "./ssr.js";
2
+ export { defineLoader, useLoaderData, PageContext } from "./loader.js";
3
+ export { Outlet, OutletProvider } from "./layout.js";
4
+ export { useAuth, useParams } from "./hooks.js";
5
+ export { hydrateCapstanPage } from "./hydrate.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ReactNode, ReactElement } from "react";
2
+ export declare function OutletProvider({ children, outlet, }: {
3
+ children: ReactElement;
4
+ outlet: ReactNode;
5
+ }): import("react").FunctionComponentElement<import("react").ProviderProps<ReactNode>>;
6
+ export declare function Outlet(): ReactElement;
7
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAKrD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;CACnB,sFAEA;AAED,wBAAgB,MAAM,IAAI,YAAY,CAGrC"}
package/dist/layout.js ADDED
@@ -0,0 +1,11 @@
1
+ import { createContext, useContext, createElement } from "react";
2
+ // Outlet renders child content in a layout
3
+ const OutletContext = createContext(null);
4
+ export function OutletProvider({ children, outlet, }) {
5
+ return createElement(OutletContext.Provider, { value: outlet }, children);
6
+ }
7
+ export function Outlet() {
8
+ const outlet = useContext(OutletContext);
9
+ return outlet;
10
+ }
11
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjE,2CAA2C;AAC3C,MAAM,aAAa,GAAG,aAAa,CAAY,IAAI,CAAC,CAAC;AAErD,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,GAIP;IACC,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAsB,CAAC;AAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { LoaderFunction, CapstanPageContext } from "./types.js";
2
+ export declare const PageContext: import("react").Context<CapstanPageContext>;
3
+ export declare function defineLoader<T>(fn: LoaderFunction<T>): LoaderFunction<T>;
4
+ export declare function useLoaderData<T extends LoaderFunction>(): Awaited<ReturnType<T>>;
5
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrE,eAAO,MAAM,WAAW,6CAItB,CAAC;AAEH,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAGhF"}
package/dist/loader.js ADDED
@@ -0,0 +1,15 @@
1
+ import { createContext, useContext } from "react";
2
+ // Context for passing loader data and page context to components
3
+ export const PageContext = createContext({
4
+ loaderData: null,
5
+ params: {},
6
+ auth: { isAuthenticated: false, type: "anonymous" },
7
+ });
8
+ export function defineLoader(fn) {
9
+ return fn;
10
+ }
11
+ export function useLoaderData() {
12
+ const ctx = useContext(PageContext);
13
+ return ctx.loaderData;
14
+ }
15
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAqB;IAC3D,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;CACpD,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAI,EAAqB;IACnD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,UAAoC,CAAC;AAClD,CAAC"}
package/dist/ssr.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { RenderPageOptions, RenderResult } from "./types.js";
2
+ export declare function renderPage(options: RenderPageOptions): Promise<RenderResult>;
3
+ //# sourceMappingURL=ssr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAelE,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,YAAY,CAAC,CA8DvB"}
package/dist/ssr.js ADDED
@@ -0,0 +1,65 @@
1
+ import { renderToString } from "react-dom/server";
2
+ import { createElement } from "react";
3
+ import { PageContext } from "./loader.js";
4
+ import { OutletProvider } from "./layout.js";
5
+ /**
6
+ * Escapes a string for safe embedding inside a <script> tag.
7
+ * Prevents XSS via </script> injection or HTML comment breakout.
8
+ */
9
+ function escapeJsonForScript(json) {
10
+ return json
11
+ .replace(/</g, "\\u003c")
12
+ .replace(/>/g, "\\u003e")
13
+ .replace(/&/g, "\\u0026")
14
+ .replace(/\u2028/g, "\\u2028")
15
+ .replace(/\u2029/g, "\\u2029");
16
+ }
17
+ export async function renderPage(options) {
18
+ const { pageModule, layouts, loaderArgs, params } = options;
19
+ // 1. Run loader if present
20
+ let loaderData = null;
21
+ if (pageModule.loader) {
22
+ loaderData = await pageModule.loader(loaderArgs);
23
+ }
24
+ // 2. Create the page context value
25
+ const contextValue = {
26
+ loaderData,
27
+ params,
28
+ auth: loaderArgs.ctx.auth,
29
+ };
30
+ // 3. Render page component
31
+ let content = createElement(pageModule.default, {});
32
+ // 4. Wrap in layouts from innermost to outermost
33
+ for (let i = layouts.length - 1; i >= 0; i--) {
34
+ const layout = layouts[i];
35
+ content = createElement(OutletProvider, {
36
+ outlet: content,
37
+ children: createElement(layout.default, {}),
38
+ });
39
+ }
40
+ // 5. Wrap in PageContext provider
41
+ const tree = createElement(PageContext.Provider, { value: contextValue }, content);
42
+ // 6. Render to HTML string
43
+ const html = renderToString(tree);
44
+ // 7. Build serialised data payload, escaped for safe script embedding
45
+ const serializedData = escapeJsonForScript(JSON.stringify({ loaderData, params, auth: contextValue.auth }));
46
+ // 8. Create full HTML document with embedded loader data for hydration
47
+ const fullHtml = `<!DOCTYPE html>
48
+ <html lang="en">
49
+ <head>
50
+ <meta charset="utf-8" />
51
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
52
+ </head>
53
+ <body>
54
+ <div id="capstan-root">${html}</div>
55
+ <script>window.__CAPSTAN_DATA__ = ${serializedData}</script>
56
+ <script type="module" src="/_capstan/client.js"></script>
57
+ </body>
58
+ </html>`;
59
+ return {
60
+ html: fullHtml,
61
+ loaderData,
62
+ statusCode: 200,
63
+ };
64
+ }
65
+ //# sourceMappingURL=ssr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.js","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C;;;GAGG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA0B;IAE1B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE5D,2BAA2B;IAC3B,IAAI,UAAU,GAAY,IAAI,CAAC;IAC/B,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,mCAAmC;IACnC,MAAM,YAAY,GAAG;QACnB,UAAU;QACV,MAAM;QACN,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI;KAC1B,CAAC;IAEF,2BAA2B;IAC3B,IAAI,OAAO,GAAiB,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAElE,iDAAiD;IACjD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,OAAO,GAAG,aAAa,CAAC,cAAc,EAAE;YACtC,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,MAAM,IAAI,GAAG,aAAa,CACxB,WAAW,CAAC,QAAQ,EACpB,EAAE,KAAK,EAAE,YAAY,EAAE,EACvB,OAAO,CACR,CAAC;IAEF,2BAA2B;IAC3B,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAElC,sEAAsE;IACtE,MAAM,cAAc,GAAG,mBAAmB,CACxC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAChE,CAAC;IAEF,uEAAuE;IACvE,MAAM,QAAQ,GAAG;;;;;;;2BAOQ,IAAI;sCACO,cAAc;;;QAG5C,CAAC;IAEP,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU;QACV,UAAU,EAAE,GAAG;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { ReactNode, ReactElement } from "react";
2
+ export interface LoaderArgs {
3
+ params: Record<string, string>;
4
+ request: Request;
5
+ ctx: {
6
+ auth: {
7
+ isAuthenticated: boolean;
8
+ type: "human" | "agent" | "anonymous";
9
+ userId?: string;
10
+ role?: string;
11
+ email?: string;
12
+ };
13
+ };
14
+ /** In-process fetch to call API routes without HTTP round-trip */
15
+ fetch: {
16
+ get: <T = unknown>(path: string, params?: Record<string, string>) => Promise<T>;
17
+ post: <T = unknown>(path: string, body?: unknown) => Promise<T>;
18
+ put: <T = unknown>(path: string, body?: unknown) => Promise<T>;
19
+ delete: <T = unknown>(path: string) => Promise<T>;
20
+ };
21
+ }
22
+ export type LoaderFunction<T = unknown> = (args: LoaderArgs) => Promise<T>;
23
+ export interface PageModule {
24
+ default: (props: Record<string, unknown>) => ReactElement;
25
+ loader?: LoaderFunction;
26
+ }
27
+ export interface LayoutModule {
28
+ default: (props: {
29
+ children?: ReactNode;
30
+ }) => ReactElement;
31
+ }
32
+ export interface RenderPageOptions {
33
+ pageModule: PageModule;
34
+ layouts: LayoutModule[];
35
+ params: Record<string, string>;
36
+ request: Request;
37
+ loaderArgs: LoaderArgs;
38
+ }
39
+ export interface RenderResult {
40
+ html: string;
41
+ loaderData: unknown;
42
+ statusCode: number;
43
+ }
44
+ export interface CapstanPageContext {
45
+ loaderData: unknown;
46
+ params: Record<string, string>;
47
+ auth: LoaderArgs["ctx"]["auth"];
48
+ }
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QACH,IAAI,EAAE;YACJ,eAAe,EAAE,OAAO,CAAC;YACzB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;YACtC,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,kEAAkE;IAClE,KAAK,EAAE;QACL,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAChE,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;KACnD,CAAC;CACH;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,CAAC;IAC1D,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,YAAY,CAAC;CAC5D;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CACjC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@zauso-ai/capstan-react",
3
+ "version": "0.1.2",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "types": "./dist/index.d.ts"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.json",
15
+ "typecheck": "tsc -p tsconfig.json --noEmit"
16
+ },
17
+ "peerDependencies": {
18
+ "react": "^19.0.0",
19
+ "react-dom": "^19.0.0"
20
+ },
21
+ "description": "React SSR integration for Capstan — loaders, layouts, Outlet, hydration",
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/barry3406/capstan.git",
28
+ "directory": "packages/react"
29
+ },
30
+ "license": "MIT",
31
+ "author": "barry3406",
32
+ "homepage": "https://github.com/barry3406/capstan",
33
+ "keywords": [
34
+ "capstan",
35
+ "ai-agent",
36
+ "full-stack",
37
+ "framework",
38
+ "mcp",
39
+ "a2a",
40
+ "typescript"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ }
45
+ }