@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 +59 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +167 -0
- package/dist/server.js.map +1 -1
- package/package.json +3 -2
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
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
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
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
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.
|
|
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"
|