@tthr/vue 0.0.18 → 0.0.19

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/server.d.ts CHANGED
@@ -3,8 +3,12 @@
3
3
  *
4
4
  * Use this in Nuxt server/api routes for webhooks, third-party integrations,
5
5
  * and any server-side logic that needs to call Tether queries/mutations.
6
+ *
7
+ * For custom functions, use `executeFunction()` which runs the function
8
+ * locally with a database proxy that calls Tether's CRUD endpoints.
6
9
  */
7
10
  import { TetherServerClient, type TetherServerClientOptions } from '@tthr/client';
11
+ import type { QueryDefinition, MutationDefinition } from '@tthr/server';
8
12
  export { TetherServerClient, type TetherServerClientOptions } from '@tthr/client';
9
13
  /**
10
14
  * Configure the server-side Tether client.
@@ -62,4 +66,59 @@ export declare function useTetherServer(): TetherServerClient;
62
66
  * ```
63
67
  */
64
68
  export declare function createTetherServer(options: TetherServerClientOptions): TetherServerClient;
69
+ /**
70
+ * Auth context for function execution
71
+ */
72
+ export interface AuthContext {
73
+ /**
74
+ * Get the user identity from the current request.
75
+ * Returns null if not authenticated.
76
+ */
77
+ getUserIdentity(): Promise<UserIdentity | null>;
78
+ }
79
+ /**
80
+ * User identity returned from auth
81
+ */
82
+ export interface UserIdentity {
83
+ /** User's subject/ID */
84
+ subject: string;
85
+ /** User's email if available */
86
+ email?: string;
87
+ /** Additional claims from the auth token */
88
+ [key: string]: unknown;
89
+ }
90
+ /**
91
+ * Options for configuring auth in function execution
92
+ */
93
+ export interface AuthOptions {
94
+ /**
95
+ * Get the current user's identity.
96
+ * This should validate the auth token and return user info.
97
+ */
98
+ getUserIdentity?: () => Promise<UserIdentity | null>;
99
+ }
100
+ /**
101
+ * Execute a Tether function locally with a database proxy.
102
+ *
103
+ * This runs the function handler in your Nuxt server, with database
104
+ * operations proxied to Tether's CRUD endpoints.
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * // server/api/my-channels.get.ts
109
+ * import { executeFunction } from '@tthr/vue/server';
110
+ * import { getMyChannels } from '~/tether/functions/channel';
111
+ *
112
+ * export default defineEventHandler(async (event) => {
113
+ * const session = await getUserSession(event);
114
+ *
115
+ * return executeFunction(getMyChannels, {}, {
116
+ * getUserIdentity: async () => session?.userId
117
+ * ? { subject: session.userId }
118
+ * : null,
119
+ * });
120
+ * });
121
+ * ```
122
+ */
123
+ export declare function executeFunction<TArgs, TResult>(fn: QueryDefinition<TArgs, TResult> | MutationDefinition<TArgs, TResult>, args: TArgs, authOptions?: AuthOptions): Promise<TResult>;
65
124
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAKlF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAE9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CAQpD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAEzF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAgC,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGtG,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAKlF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAE9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CAQpD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAEzF;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,eAAe,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACtD;AAoGD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,EAClD,EAAE,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EACxE,IAAI,EAAE,KAAK,EACX,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,OAAO,CAAC,CA4ClB"}
package/dist/server.js CHANGED
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Use this in Nuxt server/api routes for webhooks, third-party integrations,
5
5
  * and any server-side logic that needs to call Tether queries/mutations.
6
+ *
7
+ * For custom functions, use `executeFunction()` which runs the function
8
+ * locally with a database proxy that calls Tether's CRUD endpoints.
6
9
  */
7
10
  import { TetherServerClient } from '@tthr/client';
8
11
  // Re-export the server client and types for convenience
@@ -75,4 +78,168 @@ export function useTetherServer() {
75
78
  export function createTetherServer(options) {
76
79
  return new TetherServerClient(options);
77
80
  }
81
+ /**
82
+ * Create a database proxy that routes calls to Tether's CRUD endpoints
83
+ */
84
+ function createDatabaseProxy(client) {
85
+ return new Proxy({}, {
86
+ get(_target, tableName) {
87
+ return {
88
+ findMany: async (options) => {
89
+ const args = {};
90
+ if (options?.where)
91
+ args.where = options.where;
92
+ if (options?.limit)
93
+ args.limit = options.limit;
94
+ if (options?.offset)
95
+ args.offset = options.offset;
96
+ if (options?.orderBy)
97
+ args.orderBy = options.orderBy;
98
+ if (options?.orderDir)
99
+ args.orderDir = options.orderDir;
100
+ return client.query(`${tableName}.list`, args);
101
+ },
102
+ findFirst: async (options) => {
103
+ const args = { limit: 1 };
104
+ if (options?.where)
105
+ args.where = options.where;
106
+ const results = await client.query(`${tableName}.list`, args);
107
+ return results?.[0] ?? null;
108
+ },
109
+ findUnique: async (options) => {
110
+ const args = { limit: 1 };
111
+ if (options?.where)
112
+ args.where = options.where;
113
+ const results = await client.query(`${tableName}.list`, args);
114
+ return results?.[0] ?? null;
115
+ },
116
+ findById: async (id) => {
117
+ return client.query(`${tableName}.get`, { id });
118
+ },
119
+ count: async (options) => {
120
+ const args = {};
121
+ if (options?.where)
122
+ args.where = options.where;
123
+ const result = await client.query(`${tableName}.count`, args);
124
+ return result?.count ?? 0;
125
+ },
126
+ insert: async (data) => {
127
+ return client.mutation(`${tableName}.create`, { data });
128
+ },
129
+ insertMany: async (items) => {
130
+ const results = [];
131
+ for (const data of items) {
132
+ const result = await client.mutation(`${tableName}.create`, { data });
133
+ results.push(result);
134
+ }
135
+ return results;
136
+ },
137
+ create: async (options) => {
138
+ return client.mutation(`${tableName}.create`, { data: options.data });
139
+ },
140
+ update: async (options) => {
141
+ // For updates, we need to get the ID from the where clause
142
+ const whereObj = options.where;
143
+ const id = whereObj.id;
144
+ if (!id) {
145
+ throw new Error('Update requires an id in the where clause');
146
+ }
147
+ const result = await client.mutation(`${tableName}.update`, {
148
+ id,
149
+ data: options.data,
150
+ });
151
+ return result?.rowsAffected ?? 0;
152
+ },
153
+ upsert: async (options) => {
154
+ const whereObj = options.where;
155
+ const id = whereObj.id;
156
+ // Try to find existing
157
+ const existing = id
158
+ ? await client.query(`${tableName}.get`, { id }).catch(() => null)
159
+ : null;
160
+ if (existing) {
161
+ await client.mutation(`${tableName}.update`, { id, data: options.update });
162
+ return { ...existing, ...options.update };
163
+ }
164
+ else {
165
+ return client.mutation(`${tableName}.create`, { data: options.create });
166
+ }
167
+ },
168
+ delete: async (options) => {
169
+ const whereObj = options.where;
170
+ const id = whereObj.id;
171
+ if (!id) {
172
+ throw new Error('Delete requires an id in the where clause');
173
+ }
174
+ const result = await client.mutation(`${tableName}.delete`, { id });
175
+ return result?.rowsAffected ?? 0;
176
+ },
177
+ deleteById: async (id) => {
178
+ const result = await client.mutation(`${tableName}.delete`, { id });
179
+ return (result?.rowsAffected ?? 0) > 0;
180
+ },
181
+ };
182
+ },
183
+ });
184
+ }
185
+ /**
186
+ * Execute a Tether function locally with a database proxy.
187
+ *
188
+ * This runs the function handler in your Nuxt server, with database
189
+ * operations proxied to Tether's CRUD endpoints.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // server/api/my-channels.get.ts
194
+ * import { executeFunction } from '@tthr/vue/server';
195
+ * import { getMyChannels } from '~/tether/functions/channel';
196
+ *
197
+ * export default defineEventHandler(async (event) => {
198
+ * const session = await getUserSession(event);
199
+ *
200
+ * return executeFunction(getMyChannels, {}, {
201
+ * getUserIdentity: async () => session?.userId
202
+ * ? { subject: session.userId }
203
+ * : null,
204
+ * });
205
+ * });
206
+ * ```
207
+ */
208
+ export async function executeFunction(fn, args, authOptions) {
209
+ if (!serverClient) {
210
+ throw new Error('Tether server client not configured. Call configureTetherServer() first.');
211
+ }
212
+ // Create database proxy
213
+ const db = createDatabaseProxy(serverClient);
214
+ // Create auth context
215
+ const auth = {
216
+ getUserIdentity: authOptions?.getUserIdentity ?? (async () => null),
217
+ };
218
+ // Create execution context
219
+ const ctx = {
220
+ auth: {
221
+ userId: null,
222
+ claims: {},
223
+ },
224
+ userId: null,
225
+ };
226
+ // Get user identity and populate ctx
227
+ const identity = await auth.getUserIdentity();
228
+ if (identity) {
229
+ ctx.userId = identity.subject;
230
+ ctx.auth.userId = identity.subject;
231
+ ctx.auth.claims = identity;
232
+ }
233
+ // Build handler context
234
+ const handlerContext = {
235
+ db,
236
+ ctx,
237
+ auth,
238
+ args,
239
+ };
240
+ // Execute the function handler
241
+ // The type is complex due to conditional types in FunctionHandlerContext
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
243
+ return fn.handler(handlerContext);
244
+ }
78
245
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAkC,MAAM,cAAc,CAAC;AAElF,wDAAwD;AACxD,OAAO,EAAE,kBAAkB,EAAkC,MAAM,cAAc,CAAC;AAElF,4BAA4B;AAC5B,IAAI,YAAY,GAA8B,IAAI,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAkC;IACtE,YAAY,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,2EAA2E;YAC3E,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAkC;IACnE,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tthr/vue",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "description": "Tether Vue/Nuxt SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,7 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@nuxt/kit": "^3.14.0",
32
- "@tthr/client": "*"
32
+ "@tthr/client": "workspace:*",
33
+ "@tthr/server": "workspace:*"
33
34
  },
34
35
  "devDependencies": {
35
36
  "typescript": "^5.7.2"