appflare 0.2.10 → 0.2.12

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.
@@ -0,0 +1,143 @@
1
+ import { QueryKey, UseQueryOptions, UseQueryResult, InfiniteData, UseInfiniteQueryOptions, UseInfiniteQueryResult, UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+
3
+ type AppflareRequestErrorLike$2 = {
4
+ message: string;
5
+ status?: number;
6
+ };
7
+ type AppflareRequestResultLike$2<TData> = {
8
+ data: TData | null;
9
+ error: AppflareRequestErrorLike$2 | null;
10
+ };
11
+ type AppflareRealtimeSubscriptionLike$1 = {
12
+ remove: () => void;
13
+ };
14
+ type AppflareRealtimeQueryUpdateLike$1<TData> = {
15
+ event: "query:update";
16
+ payload: {
17
+ queryName: string;
18
+ signature: string;
19
+ data: TData;
20
+ };
21
+ };
22
+ type AppflareRequiredInputKeys$2<TInput extends Record<string, unknown>> = {
23
+ [K in keyof TInput]-?: undefined extends TInput[K] ? never : K;
24
+ }[keyof TInput];
25
+ type AppflareHasRequiredInputKeys$2<TInput extends Record<string, unknown>> = [
26
+ AppflareRequiredInputKeys$2<TInput>
27
+ ] extends [never] ? false : true;
28
+ type AppflareRouteRunArgs$2<TInput extends Record<string, unknown>> = AppflareHasRequiredInputKeys$2<TInput> extends true ? [args: TInput, options?: any] : [args?: TInput, options?: any];
29
+ type AppflareQueryLike$1<TArgs extends Record<string, unknown>, TData> = {
30
+ run: (...params: AppflareRouteRunArgs$2<TArgs>) => Promise<AppflareRequestResultLike$2<TData>>;
31
+ subscribe?: (options: {
32
+ args?: TArgs;
33
+ authToken?: string;
34
+ requestOptions?: any;
35
+ signal?: AbortSignal;
36
+ onChange: (data: TData, update: AppflareRealtimeQueryUpdateLike$1<TData>) => void;
37
+ onError?: (error: unknown) => void;
38
+ }) => AppflareRealtimeSubscriptionLike$1;
39
+ };
40
+ type UseAppflareQueryOptions<TArgs extends Record<string, unknown>, TData, TSelected = TData, TKey extends QueryKey = QueryKey> = {
41
+ realtime?: {
42
+ enabled?: boolean;
43
+ authToken?: string;
44
+ requestOptions?: any;
45
+ onChange?: (data: TData, update: AppflareRealtimeQueryUpdateLike$1<TData>) => void;
46
+ onError?: (error: unknown) => void;
47
+ };
48
+ requestOptions?: any;
49
+ queryOptions?: Omit<UseQueryOptions<TData, Error, TSelected, TKey>, "queryFn" | "queryKey"> & {
50
+ queryKey?: TKey;
51
+ };
52
+ };
53
+ type UseQueryCallParams<TArgs extends Record<string, unknown>, TData, TSelected, TKey extends QueryKey> = AppflareHasRequiredInputKeys$2<TArgs> extends true ? [
54
+ args: TArgs,
55
+ options?: UseAppflareQueryOptions<TArgs, TData, TSelected, TKey>
56
+ ] : [
57
+ args?: TArgs,
58
+ options?: UseAppflareQueryOptions<TArgs, TData, TSelected, TKey>
59
+ ];
60
+ declare function useQuery<TArgs extends Record<string, unknown>, TData, TSelected = TData, TKey extends QueryKey = QueryKey>(query: AppflareQueryLike$1<TArgs, TData>, ...params: UseQueryCallParams<TArgs, TData, TSelected, TKey>): UseQueryResult<TSelected, Error>;
61
+
62
+ type AppflareRequestErrorLike$1 = {
63
+ message: string;
64
+ status?: number;
65
+ };
66
+ type AppflareRequestResultLike$1<TData> = {
67
+ data: TData | null;
68
+ error: AppflareRequestErrorLike$1 | null;
69
+ };
70
+ type AppflareRealtimeSubscriptionLike = {
71
+ remove: () => void;
72
+ };
73
+ type AppflareRealtimeQueryUpdateLike<TData> = {
74
+ event: "query:update";
75
+ payload: {
76
+ queryName: string;
77
+ signature: string;
78
+ data: TData;
79
+ };
80
+ };
81
+ type AppflareRequiredInputKeys$1<TInput extends Record<string, unknown>> = {
82
+ [K in keyof TInput]-?: undefined extends TInput[K] ? never : K;
83
+ }[keyof TInput];
84
+ type AppflareHasRequiredInputKeys$1<TInput extends Record<string, unknown>> = [
85
+ AppflareRequiredInputKeys$1<TInput>
86
+ ] extends [never] ? false : true;
87
+ type AppflareRouteRunArgs$1<TInput extends Record<string, unknown>> = AppflareHasRequiredInputKeys$1<TInput> extends true ? [args: TInput, options?: any] : [args?: TInput, options?: any];
88
+ type AppflareQueryLike<TArgs extends Record<string, unknown>, TData> = {
89
+ run: (...params: AppflareRouteRunArgs$1<TArgs>) => Promise<AppflareRequestResultLike$1<TData>>;
90
+ subscribe?: (options: {
91
+ args?: TArgs;
92
+ authToken?: string;
93
+ requestOptions?: any;
94
+ signal?: AbortSignal;
95
+ onChange: (data: TData, update: AppflareRealtimeQueryUpdateLike<TData>) => void;
96
+ onError?: (error: unknown) => void;
97
+ }) => AppflareRealtimeSubscriptionLike;
98
+ };
99
+ type UseAppflareInfiniteQueryOptions<TArgs extends Record<string, unknown>, TData, TPageParam, TSelected = InfiniteData<TData, TPageParam>, TKey extends QueryKey = QueryKey> = {
100
+ realtime?: {
101
+ enabled?: boolean;
102
+ authToken?: string;
103
+ requestOptions?: any;
104
+ onChange?: (data: TData, update: AppflareRealtimeQueryUpdateLike<TData>) => void;
105
+ onError?: (error: unknown) => void;
106
+ };
107
+ requestOptions?: any;
108
+ pageParamToArgs?: (baseArgs: TArgs, pageParam: TPageParam) => TArgs;
109
+ queryOptions?: Omit<UseInfiniteQueryOptions<TData, Error, TSelected, TKey, TPageParam>, "queryFn" | "queryKey"> & {
110
+ queryKey?: TKey;
111
+ };
112
+ };
113
+ type UseInfiniteQueryCallParams<TArgs extends Record<string, unknown>, TData, TPageParam, TSelected, TKey extends QueryKey> = AppflareHasRequiredInputKeys$1<TArgs> extends true ? [
114
+ args: TArgs,
115
+ options?: UseAppflareInfiniteQueryOptions<TArgs, TData, TPageParam, TSelected, TKey>
116
+ ] : [
117
+ args?: TArgs,
118
+ options?: UseAppflareInfiniteQueryOptions<TArgs, TData, TPageParam, TSelected, TKey>
119
+ ];
120
+ declare function useInfiniteQuery<TArgs extends Record<string, unknown>, TData, TPageParam = unknown, TSelected = InfiniteData<TData, TPageParam>, TKey extends QueryKey = QueryKey>(query: AppflareQueryLike<TArgs, TData>, ...params: UseInfiniteQueryCallParams<TArgs, TData, TPageParam, TSelected, TKey>): UseInfiniteQueryResult<TSelected, Error>;
121
+
122
+ type AppflareRequestErrorLike = {
123
+ message: string;
124
+ status?: number;
125
+ };
126
+ type AppflareRequestResultLike<TData> = {
127
+ data: TData | null;
128
+ error: AppflareRequestErrorLike | null;
129
+ };
130
+ type AppflareRequiredInputKeys<TInput extends Record<string, unknown>> = {
131
+ [K in keyof TInput]-?: undefined extends TInput[K] ? never : K;
132
+ }[keyof TInput];
133
+ type AppflareHasRequiredInputKeys<TInput extends Record<string, unknown>> = [
134
+ AppflareRequiredInputKeys<TInput>
135
+ ] extends [never] ? false : true;
136
+ type AppflareRouteRunArgs<TInput extends Record<string, unknown>> = AppflareHasRequiredInputKeys<TInput> extends true ? [args: TInput, options?: any] : [args?: TInput, options?: any];
137
+ type AppflareMutationVariables<TArgs extends Record<string, unknown>> = AppflareHasRequiredInputKeys<TArgs> extends true ? TArgs : TArgs | void;
138
+ type AppflareMutationLike<TArgs extends Record<string, unknown>, TData> = {
139
+ run: (...params: AppflareRouteRunArgs<TArgs>) => Promise<AppflareRequestResultLike<TData>>;
140
+ };
141
+ declare function useMutation<TArgs extends Record<string, unknown>, TData, TContext = unknown>(mutation: AppflareMutationLike<TArgs, TData>, mutationOptions?: Omit<UseMutationOptions<TData, Error, AppflareMutationVariables<TArgs>, TContext>, "mutationFn">): UseMutationResult<TData, Error, AppflareMutationVariables<TArgs>, TContext>;
142
+
143
+ export { type UseAppflareInfiniteQueryOptions, type UseAppflareQueryOptions, useInfiniteQuery, useMutation, useQuery };
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';require('../chunk-XVWH6PJQ.js');var reactQuery=require('@tanstack/react-query'),react=require('react');function O(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function b(r,...t){let a=t[0]??{},e=t[1],o=reactQuery.useQueryClient(),i=react.useRef(e?.realtime?.onChange),p=react.useRef(e?.realtime?.onError);react.useEffect(()=>{i.current=e?.realtime?.onChange,p.current=e?.realtime?.onError;},[e?.realtime?.onChange,e?.realtime?.onError]);let u=react.useMemo(()=>e?.queryOptions?.queryKey??["appflare","query",r,a],[a,e?.queryOptions?.queryKey,r]),g=react.useMemo(()=>reactQuery.hashKey(u),[u]),f=react.useMemo(()=>reactQuery.hashKey([a]),[a]),A=react.useMemo(()=>reactQuery.hashKey([e?.realtime?.requestOptions]),[e?.realtime?.requestOptions]),m=reactQuery.useQuery({...e?.queryOptions,queryKey:u,queryFn:async()=>{let s=await r.run(a,e?.requestOptions);if(s.error)throw O(s.error);return s.data}});return react.useEffect(()=>{if(e?.realtime?.enabled===false||!r.subscribe)return;let s=new AbortController,y=r.subscribe({args:a,authToken:e.realtime?.authToken,requestOptions:e.realtime?.requestOptions,signal:s.signal,onChange:(n,c)=>{o.setQueryData(u,n),i.current?.(n,c);},onError:n=>{p.current?.(n);}});return ()=>{s.abort(),y.remove();}},[f,e?.realtime?.authToken,e?.realtime?.enabled,A,r.subscribe,o,g]),m}function h(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function P(r,...t){let a=t[0]??{},e=t[1],o=reactQuery.useQueryClient(),i=react.useRef(e?.realtime?.onChange),p=react.useRef(e?.realtime?.onError);react.useEffect(()=>{i.current=e?.realtime?.onChange,p.current=e?.realtime?.onError;},[e?.realtime?.onChange,e?.realtime?.onError]);let u=react.useMemo(()=>e?.queryOptions?.queryKey??["appflare","infinite-query",r,a],[a,e?.queryOptions?.queryKey,r]),g=react.useMemo(()=>reactQuery.hashKey(u),[u]),f=react.useMemo(()=>reactQuery.hashKey([a]),[a]),A=react.useMemo(()=>reactQuery.hashKey([e?.realtime?.requestOptions]),[e?.realtime?.requestOptions]),m=reactQuery.useInfiniteQuery({...e?.queryOptions,queryKey:u,queryFn:async({pageParam:s})=>{let y=s===void 0||!e?.pageParamToArgs?a:e.pageParamToArgs(a,s),n=await r.run(y,e?.requestOptions);if(n.error)throw h(n.error);return n.data}});return react.useEffect(()=>{if(e?.realtime?.enabled===false||!r.subscribe)return;let s=new AbortController,y=r.subscribe({args:a,authToken:e.realtime?.authToken,requestOptions:e.realtime?.requestOptions,signal:s.signal,onChange:(n,c)=>{o.setQueryData(u,l=>!l||l.pages.length===0?l:{...l,pages:[n,...l.pages.slice(1)]}),i.current?.(n,c);},onError:n=>{p.current?.(n);}});return ()=>{s.abort(),y.remove();}},[f,e?.realtime?.authToken,e?.realtime?.enabled,A,r.subscribe,o,g]),m}function L(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function C(r,t){return reactQuery.useMutation({...t,mutationFn:async a=>{let e=await r.run(a??{});if(e.error)throw L(e.error);return e.data}})}exports.useInfiniteQuery=P;exports.useMutation=C;exports.useQuery=b;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import'../chunk-4JK3AKWC.mjs';import {useQueryClient,hashKey,useQuery,useInfiniteQuery,useMutation}from'@tanstack/react-query';import {useRef,useEffect,useMemo}from'react';function O(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function b(r,...t){let a=t[0]??{},e=t[1],o=useQueryClient(),i=useRef(e?.realtime?.onChange),p=useRef(e?.realtime?.onError);useEffect(()=>{i.current=e?.realtime?.onChange,p.current=e?.realtime?.onError;},[e?.realtime?.onChange,e?.realtime?.onError]);let u=useMemo(()=>e?.queryOptions?.queryKey??["appflare","query",r,a],[a,e?.queryOptions?.queryKey,r]),g=useMemo(()=>hashKey(u),[u]),f=useMemo(()=>hashKey([a]),[a]),A=useMemo(()=>hashKey([e?.realtime?.requestOptions]),[e?.realtime?.requestOptions]),m=useQuery({...e?.queryOptions,queryKey:u,queryFn:async()=>{let s=await r.run(a,e?.requestOptions);if(s.error)throw O(s.error);return s.data}});return useEffect(()=>{if(e?.realtime?.enabled===false||!r.subscribe)return;let s=new AbortController,y=r.subscribe({args:a,authToken:e.realtime?.authToken,requestOptions:e.realtime?.requestOptions,signal:s.signal,onChange:(n,c)=>{o.setQueryData(u,n),i.current?.(n,c);},onError:n=>{p.current?.(n);}});return ()=>{s.abort(),y.remove();}},[f,e?.realtime?.authToken,e?.realtime?.enabled,A,r.subscribe,o,g]),m}function h(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function P(r,...t){let a=t[0]??{},e=t[1],o=useQueryClient(),i=useRef(e?.realtime?.onChange),p=useRef(e?.realtime?.onError);useEffect(()=>{i.current=e?.realtime?.onChange,p.current=e?.realtime?.onError;},[e?.realtime?.onChange,e?.realtime?.onError]);let u=useMemo(()=>e?.queryOptions?.queryKey??["appflare","infinite-query",r,a],[a,e?.queryOptions?.queryKey,r]),g=useMemo(()=>hashKey(u),[u]),f=useMemo(()=>hashKey([a]),[a]),A=useMemo(()=>hashKey([e?.realtime?.requestOptions]),[e?.realtime?.requestOptions]),m=useInfiniteQuery({...e?.queryOptions,queryKey:u,queryFn:async({pageParam:s})=>{let y=s===void 0||!e?.pageParamToArgs?a:e.pageParamToArgs(a,s),n=await r.run(y,e?.requestOptions);if(n.error)throw h(n.error);return n.data}});return useEffect(()=>{if(e?.realtime?.enabled===false||!r.subscribe)return;let s=new AbortController,y=r.subscribe({args:a,authToken:e.realtime?.authToken,requestOptions:e.realtime?.requestOptions,signal:s.signal,onChange:(n,c)=>{o.setQueryData(u,l=>!l||l.pages.length===0?l:{...l,pages:[n,...l.pages.slice(1)]}),i.current?.(n,c);},onError:n=>{p.current?.(n);}});return ()=>{s.abort(),y.remove();}},[f,e?.realtime?.authToken,e?.realtime?.enabled,A,r.subscribe,o,g]),m}function L(r){let t=new Error(r.message);return r.status!==void 0&&(t.status=r.status),t}function C(r,t){return useMutation({...t,mutationFn:async a=>{let e=await r.run(a??{});if(e.error)throw L(e.error);return e.data}})}export{P as useInfiniteQuery,C as useMutation,b as useQuery};
package/package.json CHANGED
@@ -1,15 +1,31 @@
1
1
  {
2
2
  "name": "appflare",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
+ "main": "./dist/index.js",
5
+ "module": "./dist/index.mjs",
6
+ "types": "./dist/index.d.ts",
4
7
  "bin": {
5
- "appflare": "./cli/index.ts"
8
+ "appflare": "./dist/cli/index.js"
6
9
  },
7
10
  "exports": {
8
- ".": "./index.ts",
9
- "./react": "./react/index.ts",
10
- "./*": "./*.ts"
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "require": "./dist/index.js"
15
+ },
16
+ "./react": {
17
+ "types": "./dist/react/index.d.ts",
18
+ "import": "./dist/react/index.mjs",
19
+ "require": "./dist/react/index.js"
20
+ },
21
+ "./*": "./dist/*.js"
22
+ },
23
+ "scripts": {
24
+ "build": "tsup",
25
+ "dev": "tsup --watch",
26
+ "lint": "tsc --noEmit",
27
+ "prepublishOnly": "bun run build"
11
28
  },
12
- "scripts": {},
13
29
  "peerDependencies": {
14
30
  "@tanstack/react-query": "^5.90.21",
15
31
  "react": ">=18"
@@ -21,21 +37,22 @@
21
37
  "@types/bun": "^1.3.9",
22
38
  "@types/node": "^25.3.0",
23
39
  "npm-check-updates": "^19.4.0",
24
- "typescript": "^5.9.3"
40
+ "typescript": "^5.9.3",
41
+ "tsup": "^8.3.6"
25
42
  },
26
43
  "dependencies": {
27
- "@better-auth/cli": "^1.4.18",
28
- "@hono/standard-validator": "^0.2.2",
29
- "better-auth": "^1.4.18",
30
- "better-auth-cloudflare": "^0.2.9",
31
- "better-fetch": "^1.1.2",
32
- "bun": "^1.3.9",
33
- "chokidar": "^5.0.0",
34
- "commander": "^14.0.3",
35
- "drizzle-kit": "^0.31.9",
36
- "drizzle-orm": "^0.45.1",
37
- "hono": "^4.12.0",
38
- "wrangler": "^4.67.0",
39
- "zod": "^4.3.6"
44
+ "@better-auth/cli": "1.4.18",
45
+ "@hono/standard-validator": "0.2.2",
46
+ "better-auth": "1.4.18",
47
+ "better-auth-cloudflare": "0.2.9",
48
+ "better-fetch": "1.1.2",
49
+ "bun": "1.3.9",
50
+ "chokidar": "5.0.0",
51
+ "commander": "14.0.3",
52
+ "drizzle-kit": "0.31.9",
53
+ "drizzle-orm": "0.45.1",
54
+ "hono": "4.12.0",
55
+ "wrangler": "4.67.0",
56
+ "zod": "4.3.6"
40
57
  }
41
58
  }
package/tsup.config.ts ADDED
@@ -0,0 +1,32 @@
1
+ import { defineConfig } from "tsup";
2
+
3
+ export default defineConfig({
4
+ entry: ["index.ts", "cli/index.ts", "react/index.ts"],
5
+ format: ["esm", "cjs"],
6
+ dts: true,
7
+ splitting: true,
8
+ sourcemap: false,
9
+ clean: true,
10
+ minify: true,
11
+ treeshake: true,
12
+ external: [
13
+ "better-auth",
14
+ "better-auth-cloudflare",
15
+ "commander",
16
+ "hono",
17
+ "zod",
18
+ "wrangler",
19
+ "drizzle-kit",
20
+ "drizzle-orm",
21
+ "chokidar",
22
+ "bun",
23
+ "better-fetch",
24
+ "@better-auth/cli",
25
+ "@hono/standard-validator",
26
+ "react",
27
+ "@tanstack/react-query",
28
+ ],
29
+ banner: {
30
+ js: "#!/usr/bin/env node",
31
+ },
32
+ });