@tailorkit/app 0.1.0-beta.8 → 1.0.0-beta.44
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/LICENSE.md +74 -0
- package/README.md +123 -0
- package/dist/chunk-7ZQPXG7O.js +34 -0
- package/dist/chunk-MYK3WL3S.js +428 -0
- package/dist/chunk-QDZXHVTU.js +277 -0
- package/dist/chunk-YFKW5FBP.js +623 -0
- package/dist/client/connection.d.ts +31 -0
- package/dist/client/query-store.d.ts +23 -0
- package/dist/client/reference.d.ts +20 -0
- package/dist/client/session.d.ts +20 -0
- package/dist/client/tools.d.ts +16 -0
- package/dist/client-connection.js +16 -0
- package/dist/client.d.ts +11 -0
- package/dist/client.js +40 -0
- package/dist/database/definition.d.ts +8 -0
- package/dist/database/schema.d.ts +78 -0
- package/dist/database/types.d.ts +8 -0
- package/dist/errors.d.ts +6 -0
- package/dist/index.d.ts +2 -71
- package/dist/index.js +91 -75
- package/dist/preact.d.ts +52 -0
- package/dist/protocol.d.ts +74 -0
- package/dist/protocol.js +39 -0
- package/dist/routing.d.ts +35 -0
- package/dist/server/builder.d.ts +46 -0
- package/dist/server/bundle.d.ts +12 -0
- package/dist/server/functions.d.ts +113 -0
- package/dist/server/instances.d.ts +17 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.js +60 -0
- package/dist/validation.d.ts +5 -0
- package/dist/views.d.ts +126 -0
- package/package.json +59 -22
- package/LICENSE +0 -674
- package/dist/builder/index.d.ts +0 -10
- package/dist/builder/upload-manifest.d.ts +0 -13
- package/dist/builder.js +0 -224
- package/dist/chunk-EKCUETAV.js +0 -26
- package/dist/chunk-ZFYKVXDO.js +0 -27
- package/dist/config/config.d.ts +0 -20
- package/dist/config/index.d.ts +0 -1
- package/dist/config/loader.d.ts +0 -7
- package/dist/config-loader.js +0 -7
- package/dist/config.js +0 -8
- package/dist/preact-version.d.ts +0 -7
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import type { Identity } from "#server/functions";
|
|
3
|
+
export declare const parseSession: (value: Parameters<typeof v.parse>[1]) => Session;
|
|
4
|
+
export interface Session {
|
|
5
|
+
toolUrl?: string;
|
|
6
|
+
identity?: Identity;
|
|
7
|
+
subjectId?: string;
|
|
8
|
+
token: string;
|
|
9
|
+
expiresAt: number;
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const sessionRenewalDelay: (session: Session) => number;
|
|
13
|
+
/** Host-owned provider: project credentials never cross into the sandbox. */
|
|
14
|
+
export declare const createSessionProvider: (options: {
|
|
15
|
+
baseUrl: string | URL;
|
|
16
|
+
appId: string;
|
|
17
|
+
fetch?: typeof fetch;
|
|
18
|
+
}) => (input: {
|
|
19
|
+
refresh: boolean;
|
|
20
|
+
}) => Promise<Session>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Session } from "./session";
|
|
2
|
+
export interface ToolBridge<TInput = unknown, TOutput = unknown> {
|
|
3
|
+
client: (path: string, input: TInput) => Promise<TOutput>;
|
|
4
|
+
session: (path: string) => Promise<Session>;
|
|
5
|
+
}
|
|
6
|
+
declare global {
|
|
7
|
+
var __tailorkitTools: ToolBridge | undefined;
|
|
8
|
+
var __tailorkitBackendSession: ((options: {
|
|
9
|
+
refresh: boolean;
|
|
10
|
+
}) => Promise<Session>) | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface TailorKitServerTools {
|
|
13
|
+
}
|
|
14
|
+
export declare const executeServerTool: (session: Session, path: string, input: unknown, request?: typeof fetch, signal?: AbortSignal) => Promise<unknown>;
|
|
15
|
+
/** Generated callers delegate only transport; host/server declarations validate both directions. */
|
|
16
|
+
export declare const callTool: (kind: "client" | "server", path: string, input?: Parameters<ToolBridge["client"]>[1]) => ReturnType<ToolBridge["client"]>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createClient,
|
|
3
|
+
createSessionProvider,
|
|
4
|
+
parseSession,
|
|
5
|
+
reference
|
|
6
|
+
} from "./chunk-MYK3WL3S.js";
|
|
7
|
+
import {
|
|
8
|
+
AppError
|
|
9
|
+
} from "./chunk-7ZQPXG7O.js";
|
|
10
|
+
export {
|
|
11
|
+
AppError,
|
|
12
|
+
createClient,
|
|
13
|
+
createSessionProvider,
|
|
14
|
+
parseSession,
|
|
15
|
+
reference
|
|
16
|
+
};
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./views";
|
|
2
|
+
export * from "./preact";
|
|
3
|
+
export { defineRoute, Route, createFileClient } from "./routing";
|
|
4
|
+
export type { RouteDefinition, ShellProps } from "./routing";
|
|
5
|
+
export { createClient, createSessionProvider, reference, } from "./client/connection";
|
|
6
|
+
export { createApi } from "./client/reference";
|
|
7
|
+
export type { Client, Session, Reference, References, } from "./client/connection";
|
|
8
|
+
export { AppError, appError } from "./errors";
|
|
9
|
+
export type { ErrorCode } from "./errors";
|
|
10
|
+
export { callTool } from "./client/tools";
|
|
11
|
+
export type { TailorKitServerTools, ToolBridge } from "./client/tools";
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ClientProvider,
|
|
3
|
+
Route,
|
|
4
|
+
callTool,
|
|
5
|
+
createFileClient,
|
|
6
|
+
createRemoteComponent,
|
|
7
|
+
defineRoute,
|
|
8
|
+
defineView,
|
|
9
|
+
useAction,
|
|
10
|
+
useMutation,
|
|
11
|
+
useQuery
|
|
12
|
+
} from "./chunk-YFKW5FBP.js";
|
|
13
|
+
import {
|
|
14
|
+
createApi,
|
|
15
|
+
createClient,
|
|
16
|
+
createSessionProvider,
|
|
17
|
+
reference
|
|
18
|
+
} from "./chunk-MYK3WL3S.js";
|
|
19
|
+
import {
|
|
20
|
+
AppError,
|
|
21
|
+
appError
|
|
22
|
+
} from "./chunk-7ZQPXG7O.js";
|
|
23
|
+
export {
|
|
24
|
+
AppError,
|
|
25
|
+
ClientProvider,
|
|
26
|
+
Route,
|
|
27
|
+
appError,
|
|
28
|
+
callTool,
|
|
29
|
+
createApi,
|
|
30
|
+
createClient,
|
|
31
|
+
createFileClient,
|
|
32
|
+
createRemoteComponent,
|
|
33
|
+
createSessionProvider,
|
|
34
|
+
defineRoute,
|
|
35
|
+
defineView,
|
|
36
|
+
reference,
|
|
37
|
+
useAction,
|
|
38
|
+
useMutation,
|
|
39
|
+
useQuery
|
|
40
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnyRelations } from "drizzle-orm/relations";
|
|
2
|
+
export interface DatabaseDefinition<R extends AnyRelations = AnyRelations> {
|
|
3
|
+
readonly relations: R;
|
|
4
|
+
}
|
|
5
|
+
/** Configure the installation database with Drizzle relations, which also contain its tables. */
|
|
6
|
+
export declare const defineDatabase: <const R extends AnyRelations>(definition: DatabaseDefinition<R>) => Readonly<{
|
|
7
|
+
relations: R;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { ColumnBuilderBase } from "drizzle-orm";
|
|
2
|
+
export declare const table: <N extends string, C extends Record<string, ColumnBuilderBase>>(name: N, columns: C) => import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
3
|
+
name: N;
|
|
4
|
+
schema: undefined;
|
|
5
|
+
columns: { [Key in keyof C]: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
6
|
+
name: string;
|
|
7
|
+
tableName: N;
|
|
8
|
+
dataType: C[Key]["_"]["dataType"];
|
|
9
|
+
data: C[Key]["_"] extends infer T ? T extends C[Key]["_"] ? T extends {
|
|
10
|
+
$type: infer U;
|
|
11
|
+
} ? U : T["data"] : never : never;
|
|
12
|
+
driverParam: C[Key]["_"]["driverParam"];
|
|
13
|
+
notNull: C[Key]["_"]["notNull"] extends true ? true : false;
|
|
14
|
+
hasDefault: C[Key]["_"]["hasDefault"] extends true ? true : false;
|
|
15
|
+
isPrimaryKey: C[Key]["_"] extends infer T_1 ? T_1 extends C[Key]["_"] ? T_1 extends {
|
|
16
|
+
isPrimaryKey: true;
|
|
17
|
+
} ? true : false : never : never;
|
|
18
|
+
isAutoincrement: C[Key]["_"] extends infer T_2 ? T_2 extends C[Key]["_"] ? T_2 extends {
|
|
19
|
+
isAutoincrement: true;
|
|
20
|
+
} ? true : false : never : never;
|
|
21
|
+
hasRuntimeDefault: C[Key]["_"] extends infer T_3 ? T_3 extends C[Key]["_"] ? T_3 extends {
|
|
22
|
+
hasRuntimeDefault: true;
|
|
23
|
+
} ? true : false : never : never;
|
|
24
|
+
enumValues: C[Key]["_"] extends infer T_4 ? T_4 extends C[Key]["_"] ? T_4 extends {
|
|
25
|
+
enumValues: [string, ...string[]];
|
|
26
|
+
} ? T_4["enumValues"] : undefined : never : never;
|
|
27
|
+
baseColumn: C[Key]["_"] extends infer T_5 ? T_5 extends C[Key]["_"] ? T_5 extends {
|
|
28
|
+
baseBuilder: infer U_1 extends ColumnBuilderBase;
|
|
29
|
+
} ? import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
30
|
+
name: string;
|
|
31
|
+
tableName: N;
|
|
32
|
+
dataType: U_1["_"]["dataType"];
|
|
33
|
+
data: U_1["_"] extends infer T_6 ? T_6 extends U_1["_"] ? T_6 extends {
|
|
34
|
+
$type: infer U;
|
|
35
|
+
} ? U : T_6["data"] : never : never;
|
|
36
|
+
driverParam: U_1["_"]["driverParam"];
|
|
37
|
+
notNull: U_1["_"]["notNull"] extends true ? true : false;
|
|
38
|
+
hasDefault: U_1["_"]["hasDefault"] extends true ? true : false;
|
|
39
|
+
isPrimaryKey: U_1["_"] extends infer T_7 ? T_7 extends U_1["_"] ? T_7 extends {
|
|
40
|
+
isPrimaryKey: true;
|
|
41
|
+
} ? true : false : never : never;
|
|
42
|
+
isAutoincrement: U_1["_"] extends infer T_8 ? T_8 extends U_1["_"] ? T_8 extends {
|
|
43
|
+
isAutoincrement: true;
|
|
44
|
+
} ? true : false : never : never;
|
|
45
|
+
hasRuntimeDefault: U_1["_"] extends infer T_9 ? T_9 extends U_1["_"] ? T_9 extends {
|
|
46
|
+
hasRuntimeDefault: true;
|
|
47
|
+
} ? true : false : never : never;
|
|
48
|
+
enumValues: U_1["_"] extends infer T_10 ? T_10 extends U_1["_"] ? T_10 extends {
|
|
49
|
+
enumValues: [string, ...string[]];
|
|
50
|
+
} ? T_10["enumValues"] : undefined : never : never;
|
|
51
|
+
baseColumn: U_1["_"] extends infer T_11 ? T_11 extends U_1["_"] ? T_11 extends {
|
|
52
|
+
baseBuilder: infer U_1 extends ColumnBuilderBase;
|
|
53
|
+
} ? import("drizzle-orm/sqlite-core").SQLiteColumn</*elided*/ any, {}> : never : never : never;
|
|
54
|
+
identity: U_1["_"] extends infer T_12 ? T_12 extends U_1["_"] ? T_12 extends {
|
|
55
|
+
identity: 'always';
|
|
56
|
+
} ? "always" : T_12 extends {
|
|
57
|
+
identity: 'byDefault';
|
|
58
|
+
} ? "byDefault" : undefined : never : never;
|
|
59
|
+
generated: U_1["_"] extends infer T_13 ? T_13 extends U_1["_"] ? T_13 extends {
|
|
60
|
+
generated: infer G;
|
|
61
|
+
} ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never;
|
|
62
|
+
}, {}> : never : never : never;
|
|
63
|
+
identity: C[Key]["_"] extends infer T_14 ? T_14 extends C[Key]["_"] ? T_14 extends {
|
|
64
|
+
identity: 'always';
|
|
65
|
+
} ? "always" : T_14 extends {
|
|
66
|
+
identity: 'byDefault';
|
|
67
|
+
} ? "byDefault" : undefined : never : never;
|
|
68
|
+
generated: C[Key]["_"] extends infer T_15 ? T_15 extends C[Key]["_"] ? T_15 extends {
|
|
69
|
+
generated: infer G;
|
|
70
|
+
} ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never;
|
|
71
|
+
}, {}>; };
|
|
72
|
+
dialect: 'sqlite';
|
|
73
|
+
}>;
|
|
74
|
+
export declare const text: (name?: string) => import("drizzle-orm/sqlite-core").SQLiteTextBuilder<[string, ...string[]]>;
|
|
75
|
+
export declare const integer: (name?: string) => import("drizzle-orm/sqlite-core").SQLiteIntegerBuilder;
|
|
76
|
+
export declare const real: (name?: string) => import("drizzle-orm/sqlite-core").SQLiteRealBuilder;
|
|
77
|
+
export declare const boolean: (name?: string) => import("drizzle-orm/sqlite-core").SQLiteBooleanBuilder;
|
|
78
|
+
export { eq, ne, gt, gte, lt, lte, and, or, asc, desc, count, isNull, isNotNull, inArray, } from "drizzle-orm";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AnyRelations, EmptyRelations } from "drizzle-orm/relations";
|
|
2
|
+
import type { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";
|
|
3
|
+
type Database<R extends AnyRelations> = BaseSQLiteDatabase<"sync", {
|
|
4
|
+
changes: number;
|
|
5
|
+
}, Record<string, never>, R>;
|
|
6
|
+
export type QueryDatabase<R extends AnyRelations = EmptyRelations> = Pick<Database<R>, "select" | "selectDistinct" | "query">;
|
|
7
|
+
export type MutationDatabase<R extends AnyRelations = EmptyRelations> = QueryDatabase<R> & Pick<Database<R>, "insert" | "update" | "delete">;
|
|
8
|
+
export {};
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type ErrorCode = "BAD_REQUEST" | "UNAUTHORIZED" | "FORBIDDEN" | "NOT_FOUND" | "CONFLICT" | "INCOMPATIBLE_VERSION" | "UNAVAILABLE" | "INTERNAL_SERVER_ERROR";
|
|
2
|
+
export declare class AppError extends Error {
|
|
3
|
+
readonly code: ErrorCode;
|
|
4
|
+
constructor(code: ErrorCode, message?: string);
|
|
5
|
+
}
|
|
6
|
+
export declare const appError: (cause: unknown) => AppError;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,71 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export interface TailorKitScreens {
|
|
4
|
-
}
|
|
5
|
-
export type ScreenPath = Extract<keyof TailorKitScreens & string, `/${string}`>;
|
|
6
|
-
export type AppScreenPath = ScreenPath;
|
|
7
|
-
export type ScreenProps<TPath extends ScreenPath> = TailorKitScreens[TPath] extends object ? TailorKitScreens[TPath] : Record<string, never>;
|
|
8
|
-
export type ScreenPropsForPath<TPath extends AppScreenPath> = TPath extends ScreenPath ? ScreenProps<TPath> : never;
|
|
9
|
-
export type ScreenContext<TPath extends AppScreenPath> = ScreenPropsForPath<TPath> extends {
|
|
10
|
-
context: infer TContext;
|
|
11
|
-
} ? TContext : Record<string, never>;
|
|
12
|
-
export type View<TProps extends object = Record<string, never>> = (props: TProps) => ComponentChild;
|
|
13
|
-
export type ScreenRuntimeProps<TPath extends AppScreenPath> = {
|
|
14
|
-
context: ScreenContext<TPath>;
|
|
15
|
-
screen: TPath;
|
|
16
|
-
status: "ready";
|
|
17
|
-
} | {
|
|
18
|
-
context?: never;
|
|
19
|
-
screen: TPath;
|
|
20
|
-
status: "loading";
|
|
21
|
-
} | {
|
|
22
|
-
context?: never;
|
|
23
|
-
screen: TPath;
|
|
24
|
-
status: "error";
|
|
25
|
-
};
|
|
26
|
-
export interface ScreenDefinition<TPath extends AppScreenPath = AppScreenPath> {
|
|
27
|
-
component: View<ScreenRuntimeProps<TPath>>;
|
|
28
|
-
path: TPath;
|
|
29
|
-
useContext: () => ScreenContext<TPath>;
|
|
30
|
-
}
|
|
31
|
-
type RegisteredScreens = {
|
|
32
|
-
[TPath in AppScreenPath]: ScreenDefinition<TPath>;
|
|
33
|
-
};
|
|
34
|
-
type ScreenDefinitions = Partial<RegisteredScreens>;
|
|
35
|
-
type InvalidScreenPath<TScreens> = Exclude<keyof TScreens & string, `/${string}`>;
|
|
36
|
-
type RequireScreenPaths<TScreens> = InvalidScreenPath<TScreens> extends never ? unknown : {
|
|
37
|
-
readonly __tailorkit_error__: `Screen paths must start with "/". Invalid screen: ${InvalidScreenPath<TScreens>}`;
|
|
38
|
-
};
|
|
39
|
-
type ScreenKeyPathMismatch<TScreens> = {
|
|
40
|
-
[TPath in keyof TScreens & string]: TScreens[TPath] extends ScreenDefinition<infer TScreenPath> ? TScreenPath extends TPath ? never : TPath : TPath;
|
|
41
|
-
}[keyof TScreens & string];
|
|
42
|
-
type RequireMatchingScreenKeys<TScreens> = ScreenKeyPathMismatch<TScreens> extends never ? unknown : {
|
|
43
|
-
readonly __tailorkit_error__: `Screen key must match createScreen path. Invalid screen: ${ScreenKeyPathMismatch<TScreens>}`;
|
|
44
|
-
};
|
|
45
|
-
export interface TailorKitClient<TScreens extends ScreenDefinitions = ScreenDefinitions> {
|
|
46
|
-
screens: TScreens;
|
|
47
|
-
}
|
|
48
|
-
export interface TailorKitClientMeta {
|
|
49
|
-
preactVersion: string;
|
|
50
|
-
}
|
|
51
|
-
export interface TailorKitClientRuntime {
|
|
52
|
-
h: typeof h;
|
|
53
|
-
render: (vnode: VNode, parent: Element | Document | ShadowRoot | DocumentFragment) => void;
|
|
54
|
-
}
|
|
55
|
-
export type TailorKitClientWithMeta<TScreens extends ScreenDefinitions = ScreenDefinitions> = TailorKitClient<TScreens> & {
|
|
56
|
-
$meta: TailorKitClientMeta;
|
|
57
|
-
$runtime: TailorKitClientRuntime;
|
|
58
|
-
};
|
|
59
|
-
export declare const createScreen: <const TPath extends AppScreenPath>(path: TPath, options: {
|
|
60
|
-
component: View<Record<string, never>>;
|
|
61
|
-
error?: View<Record<string, never>>;
|
|
62
|
-
loading?: View<Record<string, never>>;
|
|
63
|
-
}) => ScreenDefinition<TPath>;
|
|
64
|
-
export declare const defineClient: <const TScreens extends ScreenDefinitions>(client: TailorKitClient<TScreens> & RequireScreenPaths<TScreens> & RequireMatchingScreenKeys<TScreens>) => TailorKitClientWithMeta<TScreens>;
|
|
65
|
-
export declare const createRemoteComponent: <TProps extends object, TChildren extends boolean = false>(name: string, options?: {
|
|
66
|
-
callbacks?: Record<string, number>;
|
|
67
|
-
children?: TChildren;
|
|
68
|
-
}) => View<TProps & {
|
|
69
|
-
children?: TChildren extends true ? ComponentChildren : never;
|
|
70
|
-
}>;
|
|
71
|
-
export {};
|
|
1
|
+
export * from "./client";
|
|
2
|
+
export * from "./server";
|
package/dist/index.js
CHANGED
|
@@ -1,78 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const callbackMap = {};
|
|
52
|
-
for (const [key, inputCount] of Object.entries(callbacks)) {
|
|
53
|
-
const callback = nextProps[key];
|
|
54
|
-
Reflect.deleteProperty(nextProps, key);
|
|
55
|
-
if (typeof callback !== "function") {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
const eventName = toCallbackEventName(key);
|
|
59
|
-
callbackMap[eventName] = { callback: key, inputCount };
|
|
60
|
-
nextProps[toEventProp(eventName)] = (event) => {
|
|
61
|
-
callback(...(event.detail ?? []).slice(0, inputCount));
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
const serializedProps = Object.fromEntries(
|
|
65
|
-
Object.entries(nextProps).filter(([, value]) => typeof value !== "function")
|
|
66
|
-
);
|
|
67
|
-
nextProps["data-tailorkit-props"] = JSON.stringify(serializedProps);
|
|
68
|
-
if (Object.keys(callbackMap).length > 0) {
|
|
69
|
-
nextProps["data-tailorkit-callbacks"] = JSON.stringify(callbackMap);
|
|
70
|
-
}
|
|
71
|
-
return h(tagName, nextProps, options.children ? children : void 0);
|
|
72
|
-
};
|
|
73
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
ClientProvider,
|
|
3
|
+
Route,
|
|
4
|
+
callTool,
|
|
5
|
+
createFileClient,
|
|
6
|
+
createRemoteComponent,
|
|
7
|
+
defineRoute,
|
|
8
|
+
defineView,
|
|
9
|
+
useAction,
|
|
10
|
+
useMutation,
|
|
11
|
+
useQuery
|
|
12
|
+
} from "./chunk-YFKW5FBP.js";
|
|
13
|
+
import {
|
|
14
|
+
createApi,
|
|
15
|
+
createClient,
|
|
16
|
+
createSessionProvider,
|
|
17
|
+
reference
|
|
18
|
+
} from "./chunk-MYK3WL3S.js";
|
|
19
|
+
import {
|
|
20
|
+
action,
|
|
21
|
+
and,
|
|
22
|
+
asc,
|
|
23
|
+
boolean,
|
|
24
|
+
count,
|
|
25
|
+
defineDatabase,
|
|
26
|
+
defineServer,
|
|
27
|
+
desc,
|
|
28
|
+
eq,
|
|
29
|
+
fn,
|
|
30
|
+
gt,
|
|
31
|
+
gte,
|
|
32
|
+
inArray,
|
|
33
|
+
integer,
|
|
34
|
+
isNotNull,
|
|
35
|
+
isNull,
|
|
36
|
+
lt,
|
|
37
|
+
lte,
|
|
38
|
+
mutation,
|
|
39
|
+
ne,
|
|
40
|
+
or,
|
|
41
|
+
query,
|
|
42
|
+
real,
|
|
43
|
+
table,
|
|
44
|
+
text,
|
|
45
|
+
withInstanceResolvers
|
|
46
|
+
} from "./chunk-QDZXHVTU.js";
|
|
47
|
+
import {
|
|
48
|
+
AppError,
|
|
49
|
+
appError
|
|
50
|
+
} from "./chunk-7ZQPXG7O.js";
|
|
74
51
|
export {
|
|
52
|
+
AppError,
|
|
53
|
+
ClientProvider,
|
|
54
|
+
Route,
|
|
55
|
+
action,
|
|
56
|
+
and,
|
|
57
|
+
appError,
|
|
58
|
+
asc,
|
|
59
|
+
boolean,
|
|
60
|
+
callTool,
|
|
61
|
+
count,
|
|
62
|
+
createApi,
|
|
63
|
+
createClient,
|
|
64
|
+
createFileClient,
|
|
75
65
|
createRemoteComponent,
|
|
76
|
-
|
|
77
|
-
|
|
66
|
+
createSessionProvider,
|
|
67
|
+
defineDatabase,
|
|
68
|
+
defineRoute,
|
|
69
|
+
defineServer,
|
|
70
|
+
defineView,
|
|
71
|
+
desc,
|
|
72
|
+
eq,
|
|
73
|
+
fn,
|
|
74
|
+
gt,
|
|
75
|
+
gte,
|
|
76
|
+
inArray,
|
|
77
|
+
integer,
|
|
78
|
+
isNotNull,
|
|
79
|
+
isNull,
|
|
80
|
+
lt,
|
|
81
|
+
lte,
|
|
82
|
+
mutation,
|
|
83
|
+
ne,
|
|
84
|
+
or,
|
|
85
|
+
query,
|
|
86
|
+
real,
|
|
87
|
+
reference,
|
|
88
|
+
table,
|
|
89
|
+
text,
|
|
90
|
+
useAction,
|
|
91
|
+
useMutation,
|
|
92
|
+
useQuery,
|
|
93
|
+
withInstanceResolvers
|
|
78
94
|
};
|
package/dist/preact.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ComponentChildren } from "preact";
|
|
2
|
+
import type { Client } from "./client/connection";
|
|
3
|
+
import { QueryStore } from "./client/query-store";
|
|
4
|
+
import type { QueryState } from "./client/query-store";
|
|
5
|
+
import type { Reference } from "./client/reference";
|
|
6
|
+
import type { AppError } from "./errors";
|
|
7
|
+
export interface ClientProviderProps {
|
|
8
|
+
children?: ComponentChildren;
|
|
9
|
+
/** Supply a client for custom transport configuration. Caller-owned clients are not closed. */
|
|
10
|
+
client?: Client;
|
|
11
|
+
onError?: (error: AppError) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const ClientProvider: ({ children, client, onError, }: ClientProviderProps) => import("preact").VNode<import("preact").Attributes & {
|
|
14
|
+
value: QueryStore | null;
|
|
15
|
+
children?: ComponentChildren;
|
|
16
|
+
}>;
|
|
17
|
+
export interface QueryOptions {
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
type InputArguments<I> = undefined extends I ? [input?: I] : [input: I];
|
|
21
|
+
type QueryArguments<I> = undefined extends I ? [input?: I, options?: QueryOptions] : [input: I, options?: QueryOptions];
|
|
22
|
+
export interface QueryResult<T> extends QueryState<T> {
|
|
23
|
+
isPending: boolean;
|
|
24
|
+
isLoading: boolean;
|
|
25
|
+
isSuccess: boolean;
|
|
26
|
+
isError: boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const useQuery: <I, O>(ref: Reference<"query", I, O>, ...[input, options]: QueryArguments<NoInfer<I>>) => QueryResult<O>;
|
|
29
|
+
export interface CallOptions<I, O> {
|
|
30
|
+
onSuccess?: (data: O, input: I) => void;
|
|
31
|
+
onError?: (error: AppError, input: I) => void;
|
|
32
|
+
}
|
|
33
|
+
export interface CallState<T> {
|
|
34
|
+
data: T | undefined;
|
|
35
|
+
error: AppError | null;
|
|
36
|
+
status: "idle" | "pending" | "success" | "error";
|
|
37
|
+
isPending: boolean;
|
|
38
|
+
isSuccess: boolean;
|
|
39
|
+
isError: boolean;
|
|
40
|
+
reset: () => void;
|
|
41
|
+
}
|
|
42
|
+
export interface MutationResult<I, O> extends CallState<O> {
|
|
43
|
+
mutate: (...args: InputArguments<I>) => void;
|
|
44
|
+
mutateAsync: (...args: InputArguments<I>) => Promise<O>;
|
|
45
|
+
}
|
|
46
|
+
export declare const useMutation: <I, O>(ref: Reference<"mutation", I, O>, options?: CallOptions<I, O>) => MutationResult<I, O>;
|
|
47
|
+
export interface ActionResult<I, O> extends CallState<O> {
|
|
48
|
+
execute: (...args: InputArguments<I>) => void;
|
|
49
|
+
executeAsync: (...args: InputArguments<I>) => Promise<O>;
|
|
50
|
+
}
|
|
51
|
+
export declare const useAction: <I, O>(ref: Reference<"action", I, O>, options?: CallOptions<I, O>) => ActionResult<I, O>;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ContractRouterClient } from "@orpc/contract";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
export declare const invocationSchema: v.StrictObjectSchema<{
|
|
4
|
+
readonly args: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
5
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, undefined>, v.RegexAction<string, undefined>]>;
|
|
6
|
+
}, undefined>;
|
|
7
|
+
export type Invocation = v.InferOutput<typeof invocationSchema>;
|
|
8
|
+
export type MutationInvocation = Invocation & {
|
|
9
|
+
requestId: string;
|
|
10
|
+
};
|
|
11
|
+
/** Public wire contract; implementations and clients both depend on this definition. */
|
|
12
|
+
export declare const appContract: {
|
|
13
|
+
actions: import("@orpc/contract").ProcedureContractBuilderWithInputOutput<v.StrictObjectSchema<{
|
|
14
|
+
readonly args: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
15
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, undefined>, v.RegexAction<string, undefined>]>;
|
|
16
|
+
}, undefined>, import("@orpc/contract").Schema<unknown, unknown>, {
|
|
17
|
+
BAD_REQUEST: {};
|
|
18
|
+
CONFLICT: {};
|
|
19
|
+
FORBIDDEN: {};
|
|
20
|
+
INCOMPATIBLE_VERSION: {};
|
|
21
|
+
INTERNAL_SERVER_ERROR: {};
|
|
22
|
+
NOT_FOUND: {};
|
|
23
|
+
UNAUTHORIZED: {};
|
|
24
|
+
UNAVAILABLE: {};
|
|
25
|
+
}>;
|
|
26
|
+
mutations: import("@orpc/contract").ProcedureContractBuilderWithInputOutput<v.StrictObjectSchema<{
|
|
27
|
+
readonly args: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
28
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, undefined>, v.RegexAction<string, undefined>]>;
|
|
29
|
+
readonly requestId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.UuidAction<string, undefined>]>;
|
|
30
|
+
}, undefined>, import("@orpc/contract").Schema<unknown, unknown>, {
|
|
31
|
+
BAD_REQUEST: {};
|
|
32
|
+
CONFLICT: {};
|
|
33
|
+
FORBIDDEN: {};
|
|
34
|
+
INCOMPATIBLE_VERSION: {};
|
|
35
|
+
INTERNAL_SERVER_ERROR: {};
|
|
36
|
+
NOT_FOUND: {};
|
|
37
|
+
UNAUTHORIZED: {};
|
|
38
|
+
UNAVAILABLE: {};
|
|
39
|
+
}>;
|
|
40
|
+
queries: import("@orpc/contract").ProcedureContractBuilderWithInputOutput<v.StrictObjectSchema<{
|
|
41
|
+
readonly args: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
42
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, undefined>, v.RegexAction<string, undefined>]>;
|
|
43
|
+
}, undefined>, import("@orpc/contract").Schema<unknown, unknown>, {
|
|
44
|
+
BAD_REQUEST: {};
|
|
45
|
+
CONFLICT: {};
|
|
46
|
+
FORBIDDEN: {};
|
|
47
|
+
INCOMPATIBLE_VERSION: {};
|
|
48
|
+
INTERNAL_SERVER_ERROR: {};
|
|
49
|
+
NOT_FOUND: {};
|
|
50
|
+
UNAUTHORIZED: {};
|
|
51
|
+
UNAVAILABLE: {};
|
|
52
|
+
}>;
|
|
53
|
+
subscribe: import("@orpc/contract").ProcedureContractBuilderWithInputOutput<v.StrictObjectSchema<{
|
|
54
|
+
readonly args: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
55
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 512, undefined>, v.RegexAction<string, undefined>]>;
|
|
56
|
+
}, undefined>, import("@orpc/contract").Schema<AsyncIterableIterator<unknown>, AsyncIterableIterator<unknown>>, {
|
|
57
|
+
BAD_REQUEST: {};
|
|
58
|
+
CONFLICT: {};
|
|
59
|
+
FORBIDDEN: {};
|
|
60
|
+
INCOMPATIBLE_VERSION: {};
|
|
61
|
+
INTERNAL_SERVER_ERROR: {};
|
|
62
|
+
NOT_FOUND: {};
|
|
63
|
+
UNAUTHORIZED: {};
|
|
64
|
+
UNAVAILABLE: {};
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
export type PlatformClient = ContractRouterClient<typeof appContract>;
|
|
68
|
+
export type SubscriptionClient = Pick<PlatformClient, "subscribe">;
|
|
69
|
+
/** Drizzle-generated SQL exported by application bundles. */
|
|
70
|
+
export interface AppMigration {
|
|
71
|
+
id: string;
|
|
72
|
+
hash: string;
|
|
73
|
+
statements: string[];
|
|
74
|
+
}
|
package/dist/protocol.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/protocol.ts
|
|
2
|
+
import { oc, type } from "@orpc/contract";
|
|
3
|
+
import * as v from "valibot";
|
|
4
|
+
var invocationSchema = v.strictObject({
|
|
5
|
+
args: v.optional(v.unknown()),
|
|
6
|
+
name: v.pipe(
|
|
7
|
+
v.string(),
|
|
8
|
+
v.maxLength(512),
|
|
9
|
+
v.regex(
|
|
10
|
+
/^(?:[a-zA-Z][a-zA-Z0-9_]{0,63}|_tailorkit)(?:\.[a-zA-Z][a-zA-Z0-9_]{0,63})*$/u
|
|
11
|
+
)
|
|
12
|
+
)
|
|
13
|
+
});
|
|
14
|
+
var procedure = oc.errors({
|
|
15
|
+
BAD_REQUEST: {},
|
|
16
|
+
CONFLICT: {},
|
|
17
|
+
FORBIDDEN: {},
|
|
18
|
+
INCOMPATIBLE_VERSION: {},
|
|
19
|
+
INTERNAL_SERVER_ERROR: {},
|
|
20
|
+
NOT_FOUND: {},
|
|
21
|
+
UNAUTHORIZED: {},
|
|
22
|
+
UNAVAILABLE: {}
|
|
23
|
+
});
|
|
24
|
+
var appContract = {
|
|
25
|
+
actions: procedure.input(invocationSchema).output(type()),
|
|
26
|
+
mutations: procedure.input(
|
|
27
|
+
v.strictObject({
|
|
28
|
+
...invocationSchema.entries,
|
|
29
|
+
requestId: v.pipe(v.string(), v.uuid())
|
|
30
|
+
})
|
|
31
|
+
).output(type()),
|
|
32
|
+
queries: procedure.input(invocationSchema).output(type()),
|
|
33
|
+
// A pass-through type schema preserves the private hibernation iterator instance.
|
|
34
|
+
subscribe: procedure.input(invocationSchema).output(type())
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
appContract,
|
|
38
|
+
invocationSchema
|
|
39
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ComponentChildren, ComponentType } from "preact";
|
|
2
|
+
import type { TailorKitClientWithMeta } from "./views";
|
|
3
|
+
export interface ShellProps {
|
|
4
|
+
children?: ComponentChildren;
|
|
5
|
+
}
|
|
6
|
+
export interface RouteDefinition {
|
|
7
|
+
readonly shellComponent: ComponentType<ShellProps>;
|
|
8
|
+
}
|
|
9
|
+
/** Define the shell in an app or slot root.tsx. */
|
|
10
|
+
export declare const defineRoute: (options: RouteDefinition) => RouteDefinition;
|
|
11
|
+
/** Render the next layout or selected view inside a root shell or layout. */
|
|
12
|
+
export declare const Route: () => string | number | bigint | boolean | object | import("preact").ComponentChild[] | import("preact").VNode<any> | null;
|
|
13
|
+
export interface RouteModule {
|
|
14
|
+
filename: string;
|
|
15
|
+
definition: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface FileViewModule extends RouteModule {
|
|
18
|
+
slot: string;
|
|
19
|
+
path: string;
|
|
20
|
+
}
|
|
21
|
+
export interface FileLayoutModule extends RouteModule {
|
|
22
|
+
slot: string;
|
|
23
|
+
path: string;
|
|
24
|
+
}
|
|
25
|
+
/** The app builder generates this registration; apps only export their files.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare const createFileClient: (options: {
|
|
29
|
+
root?: RouteModule;
|
|
30
|
+
roots: (RouteModule & {
|
|
31
|
+
slot: string;
|
|
32
|
+
})[];
|
|
33
|
+
layouts: FileLayoutModule[];
|
|
34
|
+
views: FileViewModule[];
|
|
35
|
+
}) => TailorKitClientWithMeta;
|