@tthr/server 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +89 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,11 +12,33 @@ export interface AuthContext {
|
|
|
12
12
|
claims: Record<string, unknown>;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Database client type - represents the generated db object
|
|
16
16
|
*/
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
export type DatabaseClient = Record<string, {
|
|
18
|
+
findMany: (options?: unknown) => Promise<unknown[]>;
|
|
19
|
+
findFirst: (options?: unknown) => Promise<unknown | null>;
|
|
20
|
+
findUnique: (options?: unknown) => Promise<unknown | null>;
|
|
21
|
+
findById: (id: unknown) => Promise<unknown | null>;
|
|
22
|
+
count: (options?: unknown) => Promise<number>;
|
|
23
|
+
insert: (data: unknown) => Promise<unknown>;
|
|
24
|
+
insertMany: (data: unknown[]) => Promise<unknown[]>;
|
|
25
|
+
create: (options: {
|
|
26
|
+
data: unknown;
|
|
27
|
+
}) => Promise<unknown>;
|
|
28
|
+
update: (options: {
|
|
29
|
+
where: unknown;
|
|
30
|
+
data: unknown;
|
|
31
|
+
}) => Promise<number>;
|
|
32
|
+
upsert: (options: {
|
|
33
|
+
where: unknown;
|
|
34
|
+
create: unknown;
|
|
35
|
+
update: unknown;
|
|
36
|
+
}) => Promise<unknown>;
|
|
37
|
+
delete: (options: {
|
|
38
|
+
where: unknown;
|
|
39
|
+
}) => Promise<number>;
|
|
40
|
+
deleteById: (id: unknown) => Promise<boolean>;
|
|
41
|
+
}>;
|
|
20
42
|
/**
|
|
21
43
|
* Tether context for actions - provides access to queries, mutations, and env vars
|
|
22
44
|
*/
|
|
@@ -40,32 +62,56 @@ export interface TetherContext {
|
|
|
40
62
|
env: Record<string, string | undefined>;
|
|
41
63
|
}
|
|
42
64
|
/**
|
|
43
|
-
*
|
|
65
|
+
* Execution context with auth info
|
|
44
66
|
*/
|
|
45
|
-
export interface
|
|
67
|
+
export interface ExecutionCtx {
|
|
46
68
|
auth: AuthContext;
|
|
47
|
-
|
|
69
|
+
userId: string | null;
|
|
48
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Base handler context (without args) for queries/mutations with no arguments
|
|
73
|
+
*/
|
|
74
|
+
export interface BaseHandlerContext {
|
|
75
|
+
/** Database client for the project */
|
|
76
|
+
db: DatabaseClient;
|
|
77
|
+
/** Execution context with auth info */
|
|
78
|
+
ctx: ExecutionCtx;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Query/Mutation handler context with typed args
|
|
82
|
+
*/
|
|
83
|
+
export type FunctionHandlerContext<TArgs> = TArgs extends void ? BaseHandlerContext : BaseHandlerContext & {
|
|
84
|
+
args: TArgs;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Action handler context with typed args
|
|
88
|
+
*/
|
|
89
|
+
export type ActionHandlerCtx<TArgs> = TArgs extends void ? BaseHandlerContext & {
|
|
90
|
+
tether: TetherContext;
|
|
91
|
+
} : BaseHandlerContext & {
|
|
92
|
+
args: TArgs;
|
|
93
|
+
tether: TetherContext;
|
|
94
|
+
};
|
|
49
95
|
/**
|
|
50
96
|
* Query function definition
|
|
51
97
|
*/
|
|
52
98
|
export interface QueryDefinition<TArgs, TResult> {
|
|
53
99
|
args?: ZodType<TArgs>;
|
|
54
|
-
handler: (
|
|
100
|
+
handler: (context: FunctionHandlerContext<TArgs>) => Promise<TResult> | TResult;
|
|
55
101
|
}
|
|
56
102
|
/**
|
|
57
103
|
* Mutation function definition
|
|
58
104
|
*/
|
|
59
105
|
export interface MutationDefinition<TArgs, TResult> {
|
|
60
106
|
args?: ZodType<TArgs>;
|
|
61
|
-
handler: (
|
|
107
|
+
handler: (context: FunctionHandlerContext<TArgs>) => Promise<TResult> | TResult;
|
|
62
108
|
}
|
|
63
109
|
/**
|
|
64
110
|
* Action function definition
|
|
65
111
|
*/
|
|
66
112
|
export interface ActionDefinition<TArgs, TResult> {
|
|
67
113
|
args?: ZodType<TArgs>;
|
|
68
|
-
handler: (
|
|
114
|
+
handler: (context: ActionHandlerCtx<TArgs>) => Promise<TResult> | TResult;
|
|
69
115
|
}
|
|
70
116
|
/**
|
|
71
117
|
* Define a query function
|
|
@@ -75,20 +121,28 @@ export interface ActionDefinition<TArgs, TResult> {
|
|
|
75
121
|
* @example
|
|
76
122
|
* ```ts
|
|
77
123
|
* export const list = query({
|
|
78
|
-
*
|
|
79
|
-
*
|
|
124
|
+
* args: z.object({
|
|
125
|
+
* limit: z.number().optional().default(20),
|
|
126
|
+
* }),
|
|
127
|
+
* handler: async ({ args, db }) => {
|
|
128
|
+
* return db.posts.findMany({
|
|
129
|
+
* orderBy: { createdAt: 'desc' },
|
|
130
|
+
* limit: args.limit,
|
|
131
|
+
* });
|
|
80
132
|
* },
|
|
81
133
|
* });
|
|
82
134
|
*
|
|
83
|
-
* export const
|
|
84
|
-
* args: z.object({ id: z.
|
|
85
|
-
* handler: async ({
|
|
86
|
-
* return db.posts.
|
|
135
|
+
* export const get = query({
|
|
136
|
+
* args: z.object({ id: z.string() }),
|
|
137
|
+
* handler: async ({ args, db }) => {
|
|
138
|
+
* return db.posts.findUnique({
|
|
139
|
+
* where: { id: args.id },
|
|
140
|
+
* });
|
|
87
141
|
* },
|
|
88
142
|
* });
|
|
89
143
|
* ```
|
|
90
144
|
*/
|
|
91
|
-
export declare function query<TArgs = void, TResult = unknown>(definition: QueryDefinition<TArgs, TResult>
|
|
145
|
+
export declare function query<TArgs = void, TResult = unknown>(definition: QueryDefinition<TArgs, TResult>): QueryDefinition<TArgs, TResult>;
|
|
92
146
|
/**
|
|
93
147
|
* Define a mutation function
|
|
94
148
|
*
|
|
@@ -98,11 +152,21 @@ export declare function query<TArgs = void, TResult = unknown>(definition: Query
|
|
|
98
152
|
* ```ts
|
|
99
153
|
* export const create = mutation({
|
|
100
154
|
* args: z.object({
|
|
101
|
-
* title: z.string(),
|
|
102
|
-
* content: z.string(),
|
|
155
|
+
* title: z.string().min(1),
|
|
156
|
+
* content: z.string().optional(),
|
|
103
157
|
* }),
|
|
104
|
-
* handler: async ({
|
|
105
|
-
*
|
|
158
|
+
* handler: async ({ args, ctx, db }) => {
|
|
159
|
+
* const id = crypto.randomUUID();
|
|
160
|
+
* await db.posts.create({
|
|
161
|
+
* data: {
|
|
162
|
+
* id,
|
|
163
|
+
* title: args.title,
|
|
164
|
+
* content: args.content ?? '',
|
|
165
|
+
* authorId: ctx.userId,
|
|
166
|
+
* createdAt: new Date().toISOString(),
|
|
167
|
+
* },
|
|
168
|
+
* });
|
|
169
|
+
* return { id };
|
|
106
170
|
* },
|
|
107
171
|
* });
|
|
108
172
|
* ```
|
|
@@ -121,18 +185,18 @@ export declare function mutation<TArgs = void, TResult = unknown>(definition: Mu
|
|
|
121
185
|
* args: z.object({
|
|
122
186
|
* orderId: z.string(),
|
|
123
187
|
* }),
|
|
124
|
-
* handler: async ({
|
|
188
|
+
* handler: async ({ args, tether }) => {
|
|
125
189
|
* // Call a query
|
|
126
|
-
* const order = await tether.query('orders.get', { id: orderId });
|
|
190
|
+
* const order = await tether.query('orders.get', { id: args.orderId });
|
|
127
191
|
*
|
|
128
192
|
* // Use environment variables
|
|
129
193
|
* const response = await fetch('https://api.stripe.com/v1/charges', {
|
|
130
194
|
* headers: { Authorization: `Bearer ${tether.env.STRIPE_SECRET_KEY}` },
|
|
131
|
-
*
|
|
195
|
+
* body: new URLSearchParams({ amount: String(order.total) }),
|
|
132
196
|
* });
|
|
133
197
|
*
|
|
134
198
|
* // Call a mutation
|
|
135
|
-
* await tether.mutation('orders.update', { id: orderId, status: 'paid' });
|
|
199
|
+
* await tether.mutation('orders.update', { id: args.orderId, status: 'paid' });
|
|
136
200
|
*
|
|
137
201
|
* return { success: true };
|
|
138
202
|
* },
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12,25 +12,28 @@ import { z } from 'zod';
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts
|
|
14
14
|
* export const list = query({
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* args: z.object({
|
|
16
|
+
* limit: z.number().optional().default(20),
|
|
17
|
+
* }),
|
|
18
|
+
* handler: async ({ args, db }) => {
|
|
19
|
+
* return db.posts.findMany({
|
|
20
|
+
* orderBy: { createdAt: 'desc' },
|
|
21
|
+
* limit: args.limit,
|
|
22
|
+
* });
|
|
17
23
|
* },
|
|
18
24
|
* });
|
|
19
25
|
*
|
|
20
|
-
* export const
|
|
21
|
-
* args: z.object({ id: z.
|
|
22
|
-
* handler: async ({
|
|
23
|
-
* return db.posts.
|
|
26
|
+
* export const get = query({
|
|
27
|
+
* args: z.object({ id: z.string() }),
|
|
28
|
+
* handler: async ({ args, db }) => {
|
|
29
|
+
* return db.posts.findUnique({
|
|
30
|
+
* where: { id: args.id },
|
|
31
|
+
* });
|
|
24
32
|
* },
|
|
25
33
|
* });
|
|
26
34
|
* ```
|
|
27
35
|
*/
|
|
28
36
|
export function query(definition) {
|
|
29
|
-
if (typeof definition === 'function') {
|
|
30
|
-
return {
|
|
31
|
-
handler: (_, ctx) => definition(ctx),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
37
|
return definition;
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
@@ -42,11 +45,21 @@ export function query(definition) {
|
|
|
42
45
|
* ```ts
|
|
43
46
|
* export const create = mutation({
|
|
44
47
|
* args: z.object({
|
|
45
|
-
* title: z.string(),
|
|
46
|
-
* content: z.string(),
|
|
48
|
+
* title: z.string().min(1),
|
|
49
|
+
* content: z.string().optional(),
|
|
47
50
|
* }),
|
|
48
|
-
* handler: async ({
|
|
49
|
-
*
|
|
51
|
+
* handler: async ({ args, ctx, db }) => {
|
|
52
|
+
* const id = crypto.randomUUID();
|
|
53
|
+
* await db.posts.create({
|
|
54
|
+
* data: {
|
|
55
|
+
* id,
|
|
56
|
+
* title: args.title,
|
|
57
|
+
* content: args.content ?? '',
|
|
58
|
+
* authorId: ctx.userId,
|
|
59
|
+
* createdAt: new Date().toISOString(),
|
|
60
|
+
* },
|
|
61
|
+
* });
|
|
62
|
+
* return { id };
|
|
50
63
|
* },
|
|
51
64
|
* });
|
|
52
65
|
* ```
|
|
@@ -67,18 +80,18 @@ export function mutation(definition) {
|
|
|
67
80
|
* args: z.object({
|
|
68
81
|
* orderId: z.string(),
|
|
69
82
|
* }),
|
|
70
|
-
* handler: async ({
|
|
83
|
+
* handler: async ({ args, tether }) => {
|
|
71
84
|
* // Call a query
|
|
72
|
-
* const order = await tether.query('orders.get', { id: orderId });
|
|
85
|
+
* const order = await tether.query('orders.get', { id: args.orderId });
|
|
73
86
|
*
|
|
74
87
|
* // Use environment variables
|
|
75
88
|
* const response = await fetch('https://api.stripe.com/v1/charges', {
|
|
76
89
|
* headers: { Authorization: `Bearer ${tether.env.STRIPE_SECRET_KEY}` },
|
|
77
|
-
*
|
|
90
|
+
* body: new URLSearchParams({ amount: String(order.total) }),
|
|
78
91
|
* });
|
|
79
92
|
*
|
|
80
93
|
* // Call a mutation
|
|
81
|
-
* await tether.mutation('orders.update', { id: orderId, status: 'paid' });
|
|
94
|
+
* await tether.mutation('orders.update', { id: args.orderId, status: 'paid' });
|
|
82
95
|
*
|
|
83
96
|
* return { success: true };
|
|
84
97
|
* },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AA6GtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,KAAK,CACnB,UAA2C;IAE3C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,QAAQ,CACtB,UAA8C;IAE9C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,MAAM,CACpB,UAA4C;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAUD,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAsB;IAErC,YAAY,OAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAc,IAAY,EAAE,IAAc;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,eAAe,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAc,IAAY,EAAE,IAAc;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,kBAAkB,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;aACjD;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,CAAC"}
|