@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 CHANGED
@@ -12,11 +12,33 @@ export interface AuthContext {
12
12
  claims: Record<string, unknown>;
13
13
  }
14
14
  /**
15
- * Execution context passed to query and mutation handlers
15
+ * Database client type - represents the generated db object
16
16
  */
17
- export interface ExecutionContext {
18
- auth: AuthContext;
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
- * Action execution context - includes auth and tether helpers
65
+ * Execution context with auth info
44
66
  */
45
- export interface ActionContext {
67
+ export interface ExecutionCtx {
46
68
  auth: AuthContext;
47
- tether: TetherContext;
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: (args: TArgs, ctx: ExecutionContext) => Promise<TResult> | TResult;
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: (args: TArgs, ctx: ExecutionContext) => Promise<TResult> | TResult;
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: (args: TArgs, ctx: ActionContext) => Promise<TResult> | TResult;
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
- * handler: async () => {
79
- * return db.posts.findMany();
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 byId = query({
84
- * args: z.object({ id: z.number() }),
85
- * handler: async ({ id }) => {
86
- * return db.posts.findById(id);
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> | ((ctx: ExecutionContext) => Promise<TResult> | TResult)): 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 ({ title, content }, { auth }) => {
105
- * return db.posts.insert({ title, content, authorId: auth.userId });
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 ({ orderId }, { tether }) => {
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
  * },
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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
- * handler: async () => {
16
- * return db.posts.findMany();
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 byId = query({
21
- * args: z.object({ id: z.number() }),
22
- * handler: async ({ id }) => {
23
- * return db.posts.findById(id);
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 ({ title, content }, { auth }) => {
49
- * return db.posts.insert({ title, content, authorId: auth.userId });
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 ({ orderId }, { tether }) => {
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":"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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tthr/server",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Tether server SDK for Node.js/Bun/Deno",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",