@geenius/adapters 0.1.0 → 0.3.0
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/README.md +79 -42
- package/package.json +23 -4
- package/packages/convex/README.md +1 -1
- package/packages/convex/dist/index.cjs +300 -0
- package/packages/convex/dist/index.cjs.map +1 -0
- package/packages/convex/dist/index.d.cts +231 -0
- package/packages/convex/dist/index.d.ts +231 -0
- package/packages/convex/dist/index.js +263 -0
- package/packages/convex/dist/index.js.map +1 -0
- package/packages/react/README.md +1 -1
- package/packages/react/dist/index.d.mts +106 -0
- package/packages/react/dist/index.d.ts +106 -0
- package/packages/react/dist/index.js +611 -0
- package/packages/react/dist/index.js.map +1 -0
- package/packages/react/dist/index.mjs +570 -0
- package/packages/react/dist/index.mjs.map +1 -0
- package/packages/react-css/README.md +1 -1
- package/packages/react-css/dist/index.cjs +515 -0
- package/packages/react-css/dist/index.cjs.map +1 -0
- package/packages/react-css/dist/index.d.cts +105 -0
- package/packages/react-css/dist/index.d.ts +105 -0
- package/packages/react-css/dist/index.js +467 -0
- package/packages/react-css/dist/index.js.map +1 -0
- package/packages/shared/README.md +1 -1
- package/packages/shared/dist/index.d.mts +625 -0
- package/packages/shared/dist/index.d.ts +625 -0
- package/packages/shared/dist/index.js +1567 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/shared/dist/index.mjs +1489 -0
- package/packages/shared/dist/index.mjs.map +1 -0
- package/packages/solidjs/README.md +1 -1
- package/packages/solidjs/dist/index.d.mts +97 -0
- package/packages/solidjs/dist/index.d.ts +97 -0
- package/packages/solidjs/dist/index.js +250 -0
- package/packages/solidjs/dist/index.js.map +1 -0
- package/packages/solidjs/dist/index.mjs +202 -0
- package/packages/solidjs/dist/index.mjs.map +1 -0
- package/packages/solidjs-css/README.md +1 -1
- package/packages/solidjs-css/dist/index.cjs +343 -0
- package/packages/solidjs-css/dist/index.cjs.map +1 -0
- package/packages/solidjs-css/dist/index.d.cts +67 -0
- package/packages/solidjs-css/dist/index.d.ts +67 -0
- package/packages/solidjs-css/dist/index.js +326 -0
- package/packages/solidjs-css/dist/index.js.map +1 -0
- package/.changeset/config.json +0 -11
- package/.github/CODEOWNERS +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -23
- package/.github/workflows/release.yml +0 -29
- package/.nvmrc +0 -1
- package/.project/ACCOUNT.yaml +0 -4
- package/.project/IDEAS.yaml +0 -7
- package/.project/PROJECT.yaml +0 -11
- package/.project/ROADMAP.yaml +0 -15
- package/CODE_OF_CONDUCT.md +0 -16
- package/CONTRIBUTING.md +0 -26
- package/SECURITY.md +0 -15
- package/SUPPORT.md +0 -8
- package/packages/convex/package.json +0 -42
- package/packages/convex/src/adapter.ts +0 -39
- package/packages/convex/src/index.ts +0 -19
- package/packages/convex/src/mutations.ts +0 -142
- package/packages/convex/src/queries.ts +0 -106
- package/packages/convex/src/schema.ts +0 -54
- package/packages/convex/src/types.ts +0 -20
- package/packages/convex/tsconfig.json +0 -11
- package/packages/convex/tsup.config.ts +0 -10
- package/packages/react/package.json +0 -45
- package/packages/react/src/components/AdapterCard.tsx +0 -49
- package/packages/react/src/components/AdapterConfigForm.tsx +0 -118
- package/packages/react/src/components/AdapterList.tsx +0 -84
- package/packages/react/src/components/AdapterStatusBadge.tsx +0 -30
- package/packages/react/src/components/index.ts +0 -4
- package/packages/react/src/hooks/index.ts +0 -75
- package/packages/react/src/index.tsx +0 -44
- package/packages/react/src/pages/AdapterDetailPage.tsx +0 -133
- package/packages/react/src/pages/AdaptersPage.tsx +0 -111
- package/packages/react/src/pages/index.ts +0 -2
- package/packages/react/src/provider/AdapterProvider.tsx +0 -115
- package/packages/react/src/provider/index.ts +0 -2
- package/packages/react/tsconfig.json +0 -18
- package/packages/react/tsup.config.ts +0 -10
- package/packages/react-css/package.json +0 -44
- package/packages/react-css/src/adapters.css +0 -1576
- package/packages/react-css/src/components/AdapterCard.tsx +0 -34
- package/packages/react-css/src/components/AdapterConfigForm.tsx +0 -63
- package/packages/react-css/src/components/AdapterList.tsx +0 -40
- package/packages/react-css/src/components/AdapterStatusBadge.tsx +0 -21
- package/packages/react-css/src/components/index.ts +0 -4
- package/packages/react-css/src/hooks/index.ts +0 -75
- package/packages/react-css/src/index.tsx +0 -25
- package/packages/react-css/src/pages/AdapterDetailPage.tsx +0 -133
- package/packages/react-css/src/pages/AdaptersPage.tsx +0 -111
- package/packages/react-css/src/pages/index.ts +0 -2
- package/packages/react-css/src/provider/AdapterProvider.tsx +0 -115
- package/packages/react-css/src/provider/index.ts +0 -2
- package/packages/react-css/src/styles.css +0 -494
- package/packages/react-css/tsconfig.json +0 -19
- package/packages/react-css/tsup.config.ts +0 -2
- package/packages/shared/package.json +0 -39
- package/packages/shared/src/__tests__/adapters.test.ts +0 -545
- package/packages/shared/src/admin/index.ts +0 -2
- package/packages/shared/src/admin/interface.ts +0 -34
- package/packages/shared/src/admin/localStorage.ts +0 -109
- package/packages/shared/src/ai/anthropic.ts +0 -123
- package/packages/shared/src/ai/cloudflare-gateway.ts +0 -130
- package/packages/shared/src/ai/gemini.ts +0 -181
- package/packages/shared/src/ai/index.ts +0 -14
- package/packages/shared/src/ai/interface.ts +0 -11
- package/packages/shared/src/ai/localStorage.ts +0 -78
- package/packages/shared/src/ai/ollama.ts +0 -143
- package/packages/shared/src/ai/openai.ts +0 -120
- package/packages/shared/src/ai/vercel-ai.ts +0 -101
- package/packages/shared/src/auth/better-auth.ts +0 -118
- package/packages/shared/src/auth/clerk.ts +0 -151
- package/packages/shared/src/auth/convex-auth.ts +0 -125
- package/packages/shared/src/auth/index.ts +0 -10
- package/packages/shared/src/auth/interface.ts +0 -17
- package/packages/shared/src/auth/localStorage.ts +0 -125
- package/packages/shared/src/auth/supabase-auth.ts +0 -136
- package/packages/shared/src/config.ts +0 -57
- package/packages/shared/src/constants.ts +0 -122
- package/packages/shared/src/db/convex.ts +0 -146
- package/packages/shared/src/db/index.ts +0 -10
- package/packages/shared/src/db/interface.ts +0 -13
- package/packages/shared/src/db/localStorage.ts +0 -91
- package/packages/shared/src/db/mongodb.ts +0 -125
- package/packages/shared/src/db/neon.ts +0 -171
- package/packages/shared/src/db/supabase.ts +0 -158
- package/packages/shared/src/index.ts +0 -117
- package/packages/shared/src/payments/index.ts +0 -4
- package/packages/shared/src/payments/interface.ts +0 -11
- package/packages/shared/src/payments/localStorage.ts +0 -81
- package/packages/shared/src/payments/stripe.ts +0 -177
- package/packages/shared/src/storage/convex.ts +0 -113
- package/packages/shared/src/storage/index.ts +0 -14
- package/packages/shared/src/storage/interface.ts +0 -11
- package/packages/shared/src/storage/localStorage.ts +0 -95
- package/packages/shared/src/storage/minio.ts +0 -47
- package/packages/shared/src/storage/r2.ts +0 -123
- package/packages/shared/src/storage/s3.ts +0 -128
- package/packages/shared/src/storage/supabase-storage.ts +0 -116
- package/packages/shared/src/storage/uploadthing.ts +0 -126
- package/packages/shared/src/styles/adapters.css +0 -494
- package/packages/shared/src/tier-gate.ts +0 -119
- package/packages/shared/src/types.ts +0 -162
- package/packages/shared/tsconfig.json +0 -18
- package/packages/shared/tsup.config.ts +0 -9
- package/packages/shared/vitest.config.ts +0 -14
- package/packages/solidjs/package.json +0 -44
- package/packages/solidjs/src/components/AdapterCard.tsx +0 -24
- package/packages/solidjs/src/components/AdapterConfigForm.tsx +0 -54
- package/packages/solidjs/src/components/AdapterList.tsx +0 -28
- package/packages/solidjs/src/components/AdapterStatusBadge.tsx +0 -20
- package/packages/solidjs/src/components/index.ts +0 -4
- package/packages/solidjs/src/index.tsx +0 -17
- package/packages/solidjs/src/pages/AdapterDetailPage.tsx +0 -38
- package/packages/solidjs/src/pages/AdaptersPage.tsx +0 -39
- package/packages/solidjs/src/pages/index.ts +0 -2
- package/packages/solidjs/src/primitives/index.ts +0 -78
- package/packages/solidjs/src/provider/AdapterProvider.tsx +0 -62
- package/packages/solidjs/src/provider/index.ts +0 -2
- package/packages/solidjs/tsconfig.json +0 -20
- package/packages/solidjs/tsup.config.ts +0 -10
- package/packages/solidjs-css/package.json +0 -43
- package/packages/solidjs-css/src/adapters.css +0 -1576
- package/packages/solidjs-css/src/components/AdapterCard.tsx +0 -43
- package/packages/solidjs-css/src/components/AdapterConfigForm.tsx +0 -119
- package/packages/solidjs-css/src/components/AdapterList.tsx +0 -68
- package/packages/solidjs-css/src/components/AdapterStatusBadge.tsx +0 -24
- package/packages/solidjs-css/src/components/index.ts +0 -8
- package/packages/solidjs-css/src/index.tsx +0 -30
- package/packages/solidjs-css/src/pages/AdapterDetailPage.tsx +0 -107
- package/packages/solidjs-css/src/pages/AdaptersPage.tsx +0 -94
- package/packages/solidjs-css/src/pages/index.ts +0 -4
- package/packages/solidjs-css/src/primitives/index.ts +0 -1
- package/packages/solidjs-css/src/provider/AdapterProvider.tsx +0 -61
- package/packages/solidjs-css/src/provider/index.ts +0 -2
- package/packages/solidjs-css/tsconfig.json +0 -20
- package/packages/solidjs-css/tsup.config.ts +0 -2
- package/pnpm-workspace.yaml +0 -2
- package/tsconfig.json +0 -17
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
// src/schema.ts
|
|
2
|
+
import { defineSchema, defineTable } from "convex/server";
|
|
3
|
+
import { v } from "convex/values";
|
|
4
|
+
var schema_default = defineSchema({
|
|
5
|
+
// ─── Adapter Registry ──────────────────────────────────────
|
|
6
|
+
adapter_registry: defineTable({
|
|
7
|
+
domain: v.union(
|
|
8
|
+
v.literal("db"),
|
|
9
|
+
v.literal("auth"),
|
|
10
|
+
v.literal("payments"),
|
|
11
|
+
v.literal("ai"),
|
|
12
|
+
v.literal("storage"),
|
|
13
|
+
v.literal("admin")
|
|
14
|
+
),
|
|
15
|
+
provider: v.string(),
|
|
16
|
+
status: v.union(
|
|
17
|
+
v.literal("connected"),
|
|
18
|
+
v.literal("disconnected"),
|
|
19
|
+
v.literal("error"),
|
|
20
|
+
v.literal("initializing")
|
|
21
|
+
),
|
|
22
|
+
config: v.object({
|
|
23
|
+
provider: v.string(),
|
|
24
|
+
apiKey: v.optional(v.string()),
|
|
25
|
+
baseUrl: v.optional(v.string()),
|
|
26
|
+
options: v.optional(v.any())
|
|
27
|
+
}),
|
|
28
|
+
connectedAt: v.optional(v.number()),
|
|
29
|
+
lastHealthCheck: v.optional(v.number()),
|
|
30
|
+
errorMessage: v.optional(v.string()),
|
|
31
|
+
// Metadata
|
|
32
|
+
createdBy: v.optional(v.string()),
|
|
33
|
+
createdAt: v.number(),
|
|
34
|
+
updatedAt: v.number()
|
|
35
|
+
}).index("by_domain", ["domain"]).index("by_status", ["status"]).index("by_domain_provider", ["domain", "provider"]),
|
|
36
|
+
// ─── Adapter Health Logs ───────────────────────────────────
|
|
37
|
+
adapter_health_logs: defineTable({
|
|
38
|
+
adapterId: v.id("adapter_registry"),
|
|
39
|
+
domain: v.union(
|
|
40
|
+
v.literal("db"),
|
|
41
|
+
v.literal("auth"),
|
|
42
|
+
v.literal("payments"),
|
|
43
|
+
v.literal("ai"),
|
|
44
|
+
v.literal("storage"),
|
|
45
|
+
v.literal("admin")
|
|
46
|
+
),
|
|
47
|
+
status: v.union(
|
|
48
|
+
v.literal("connected"),
|
|
49
|
+
v.literal("disconnected"),
|
|
50
|
+
v.literal("error"),
|
|
51
|
+
v.literal("initializing")
|
|
52
|
+
),
|
|
53
|
+
latency: v.optional(v.number()),
|
|
54
|
+
errorMessage: v.optional(v.string()),
|
|
55
|
+
timestamp: v.number()
|
|
56
|
+
}).index("by_adapter", ["adapterId"]).index("by_domain", ["domain"]).index("by_timestamp", ["timestamp"])
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// src/mutations.ts
|
|
60
|
+
import { mutation } from "./_generated/server";
|
|
61
|
+
import { v as v2 } from "convex/values";
|
|
62
|
+
var domainValidator = v2.union(
|
|
63
|
+
v2.literal("db"),
|
|
64
|
+
v2.literal("auth"),
|
|
65
|
+
v2.literal("payments"),
|
|
66
|
+
v2.literal("ai"),
|
|
67
|
+
v2.literal("storage"),
|
|
68
|
+
v2.literal("admin")
|
|
69
|
+
);
|
|
70
|
+
var statusValidator = v2.union(
|
|
71
|
+
v2.literal("connected"),
|
|
72
|
+
v2.literal("disconnected"),
|
|
73
|
+
v2.literal("error"),
|
|
74
|
+
v2.literal("initializing")
|
|
75
|
+
);
|
|
76
|
+
var registerAdapter = mutation({
|
|
77
|
+
args: {
|
|
78
|
+
domain: domainValidator,
|
|
79
|
+
provider: v2.string(),
|
|
80
|
+
config: v2.object({
|
|
81
|
+
provider: v2.string(),
|
|
82
|
+
apiKey: v2.optional(v2.string()),
|
|
83
|
+
baseUrl: v2.optional(v2.string()),
|
|
84
|
+
options: v2.optional(v2.any())
|
|
85
|
+
}),
|
|
86
|
+
createdBy: v2.optional(v2.string())
|
|
87
|
+
},
|
|
88
|
+
handler: async (ctx, args) => {
|
|
89
|
+
const existing = await ctx.db.query("adapter_registry").withIndex("by_domain_provider", (q) => q.eq("domain", args.domain).eq("provider", args.provider)).first();
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
if (existing) {
|
|
92
|
+
await ctx.db.patch(existing._id, {
|
|
93
|
+
config: args.config,
|
|
94
|
+
status: "initializing",
|
|
95
|
+
updatedAt: now
|
|
96
|
+
});
|
|
97
|
+
return existing._id;
|
|
98
|
+
}
|
|
99
|
+
return await ctx.db.insert("adapter_registry", {
|
|
100
|
+
domain: args.domain,
|
|
101
|
+
provider: args.provider,
|
|
102
|
+
status: "initializing",
|
|
103
|
+
config: args.config,
|
|
104
|
+
connectedAt: void 0,
|
|
105
|
+
lastHealthCheck: void 0,
|
|
106
|
+
errorMessage: void 0,
|
|
107
|
+
createdBy: args.createdBy,
|
|
108
|
+
createdAt: now,
|
|
109
|
+
updatedAt: now
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
var updateAdapterStatus = mutation({
|
|
114
|
+
args: {
|
|
115
|
+
adapterId: v2.id("adapter_registry"),
|
|
116
|
+
status: statusValidator,
|
|
117
|
+
latency: v2.optional(v2.number()),
|
|
118
|
+
errorMessage: v2.optional(v2.string())
|
|
119
|
+
},
|
|
120
|
+
handler: async (ctx, args) => {
|
|
121
|
+
const now = Date.now();
|
|
122
|
+
const update = {
|
|
123
|
+
status: args.status,
|
|
124
|
+
lastHealthCheck: now,
|
|
125
|
+
updatedAt: now
|
|
126
|
+
};
|
|
127
|
+
if (args.status === "connected") {
|
|
128
|
+
update.connectedAt = now;
|
|
129
|
+
update.errorMessage = void 0;
|
|
130
|
+
}
|
|
131
|
+
if (args.status === "error" && args.errorMessage) {
|
|
132
|
+
update.errorMessage = args.errorMessage;
|
|
133
|
+
}
|
|
134
|
+
await ctx.db.patch(args.adapterId, update);
|
|
135
|
+
await ctx.db.insert("adapter_health_logs", {
|
|
136
|
+
adapterId: args.adapterId,
|
|
137
|
+
domain: (await ctx.db.get(args.adapterId)).domain,
|
|
138
|
+
status: args.status,
|
|
139
|
+
latency: args.latency,
|
|
140
|
+
errorMessage: args.errorMessage,
|
|
141
|
+
timestamp: now
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
var updateAdapter = mutation({
|
|
146
|
+
args: {
|
|
147
|
+
adapterId: v2.id("adapter_registry"),
|
|
148
|
+
config: v2.object({
|
|
149
|
+
provider: v2.string(),
|
|
150
|
+
apiKey: v2.optional(v2.string()),
|
|
151
|
+
baseUrl: v2.optional(v2.string()),
|
|
152
|
+
options: v2.optional(v2.any())
|
|
153
|
+
})
|
|
154
|
+
},
|
|
155
|
+
handler: async (ctx, args) => {
|
|
156
|
+
await ctx.db.patch(args.adapterId, {
|
|
157
|
+
config: args.config,
|
|
158
|
+
status: "initializing",
|
|
159
|
+
updatedAt: Date.now()
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
var removeAdapter = mutation({
|
|
164
|
+
args: { adapterId: v2.id("adapter_registry") },
|
|
165
|
+
handler: async (ctx, args) => {
|
|
166
|
+
const logs = await ctx.db.query("adapter_health_logs").withIndex("by_adapter", (q) => q.eq("adapterId", args.adapterId)).collect();
|
|
167
|
+
for (const log of logs) {
|
|
168
|
+
await ctx.db.delete(log._id);
|
|
169
|
+
}
|
|
170
|
+
await ctx.db.delete(args.adapterId);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// src/queries.ts
|
|
175
|
+
import { query } from "./_generated/server";
|
|
176
|
+
import { v as v3 } from "convex/values";
|
|
177
|
+
var listAdapters = query({
|
|
178
|
+
args: {},
|
|
179
|
+
handler: async (ctx) => {
|
|
180
|
+
return await ctx.db.query("adapter_registry").collect();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
var listAdaptersByDomain = query({
|
|
184
|
+
args: {
|
|
185
|
+
domain: v3.union(
|
|
186
|
+
v3.literal("db"),
|
|
187
|
+
v3.literal("auth"),
|
|
188
|
+
v3.literal("payments"),
|
|
189
|
+
v3.literal("ai"),
|
|
190
|
+
v3.literal("storage"),
|
|
191
|
+
v3.literal("admin")
|
|
192
|
+
)
|
|
193
|
+
},
|
|
194
|
+
handler: async (ctx, args) => {
|
|
195
|
+
return await ctx.db.query("adapter_registry").withIndex("by_domain", (q) => q.eq("domain", args.domain)).collect();
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
var getAdapter = query({
|
|
199
|
+
args: { adapterId: v3.id("adapter_registry") },
|
|
200
|
+
handler: async (ctx, args) => {
|
|
201
|
+
return await ctx.db.get(args.adapterId);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
var getActiveAdapter = query({
|
|
205
|
+
args: {
|
|
206
|
+
domain: v3.union(
|
|
207
|
+
v3.literal("db"),
|
|
208
|
+
v3.literal("auth"),
|
|
209
|
+
v3.literal("payments"),
|
|
210
|
+
v3.literal("ai"),
|
|
211
|
+
v3.literal("storage"),
|
|
212
|
+
v3.literal("admin")
|
|
213
|
+
)
|
|
214
|
+
},
|
|
215
|
+
handler: async (ctx, args) => {
|
|
216
|
+
const adapters = await ctx.db.query("adapter_registry").withIndex("by_domain", (q) => q.eq("domain", args.domain)).collect();
|
|
217
|
+
return adapters.find((a) => a.status === "connected") ?? adapters[0] ?? null;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
var getAdapterStatusSummary = query({
|
|
221
|
+
args: {},
|
|
222
|
+
handler: async (ctx) => {
|
|
223
|
+
const all = await ctx.db.query("adapter_registry").collect();
|
|
224
|
+
const domains = ["db", "auth", "payments", "ai", "storage", "admin"];
|
|
225
|
+
return domains.map((domain) => {
|
|
226
|
+
const domainAdapters = all.filter((a) => a.domain === domain);
|
|
227
|
+
const connected = domainAdapters.find((a) => a.status === "connected");
|
|
228
|
+
return {
|
|
229
|
+
domain,
|
|
230
|
+
provider: connected?.provider ?? domainAdapters[0]?.provider ?? null,
|
|
231
|
+
status: connected?.status ?? domainAdapters[0]?.status ?? "disconnected",
|
|
232
|
+
count: domainAdapters.length
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
var getAdapterHealthLogs = query({
|
|
238
|
+
args: {
|
|
239
|
+
adapterId: v3.id("adapter_registry"),
|
|
240
|
+
limit: v3.optional(v3.number())
|
|
241
|
+
},
|
|
242
|
+
handler: async (ctx, args) => {
|
|
243
|
+
const q = ctx.db.query("adapter_health_logs").withIndex("by_adapter", (q2) => q2.eq("adapterId", args.adapterId)).order("desc");
|
|
244
|
+
if (args.limit) {
|
|
245
|
+
return await q.take(args.limit);
|
|
246
|
+
}
|
|
247
|
+
return await q.take(50);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
export {
|
|
251
|
+
getActiveAdapter,
|
|
252
|
+
getAdapter,
|
|
253
|
+
getAdapterHealthLogs,
|
|
254
|
+
getAdapterStatusSummary,
|
|
255
|
+
listAdapters,
|
|
256
|
+
listAdaptersByDomain,
|
|
257
|
+
registerAdapter,
|
|
258
|
+
removeAdapter,
|
|
259
|
+
schema_default as schema,
|
|
260
|
+
updateAdapter,
|
|
261
|
+
updateAdapterStatus
|
|
262
|
+
};
|
|
263
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts","../src/mutations.ts","../src/queries.ts"],"sourcesContent":["// @geenius/adapters-convex — Schema\n\nimport { defineSchema, defineTable } from 'convex/server'\nimport { v } from 'convex/values'\n\nexport default defineSchema({\n // ─── Adapter Registry ──────────────────────────────────────\n adapter_registry: defineTable({\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n provider: v.string(),\n status: v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n ),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n connectedAt: v.optional(v.number()),\n lastHealthCheck: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n // Metadata\n createdBy: v.optional(v.string()),\n createdAt: v.number(),\n updatedAt: v.number(),\n })\n .index('by_domain', ['domain'])\n .index('by_status', ['status'])\n .index('by_domain_provider', ['domain', 'provider']),\n\n // ─── Adapter Health Logs ───────────────────────────────────\n adapter_health_logs: defineTable({\n adapterId: v.id('adapter_registry'),\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n status: v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n ),\n latency: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n timestamp: v.number(),\n })\n .index('by_adapter', ['adapterId'])\n .index('by_domain', ['domain'])\n .index('by_timestamp', ['timestamp']),\n})\n","// @geenius/adapters-convex — Mutations\n\nimport { mutation } from './_generated/server'\nimport { v } from 'convex/values'\n\nconst domainValidator = v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n)\n\nconst statusValidator = v.union(\n v.literal('connected'), v.literal('disconnected'),\n v.literal('error'), v.literal('initializing'),\n)\n\n/**\n * Register or update an adapter for a given domain.\n */\nexport const registerAdapter = mutation({\n args: {\n domain: domainValidator,\n provider: v.string(),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n createdBy: v.optional(v.string()),\n },\n handler: async (ctx, args) => {\n // Check if adapter already exists for this domain\n const existing = await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain_provider', (q) => q.eq('domain', args.domain).eq('provider', args.provider))\n .first()\n\n const now = Date.now()\n\n if (existing) {\n await ctx.db.patch(existing._id, {\n config: args.config,\n status: 'initializing',\n updatedAt: now,\n })\n return existing._id\n }\n\n return await ctx.db.insert('adapter_registry', {\n domain: args.domain,\n provider: args.provider,\n status: 'initializing',\n config: args.config,\n connectedAt: undefined,\n lastHealthCheck: undefined,\n errorMessage: undefined,\n createdBy: args.createdBy,\n createdAt: now,\n updatedAt: now,\n })\n },\n})\n\n/**\n * Update an adapter's status.\n */\nexport const updateAdapterStatus = mutation({\n args: {\n adapterId: v.id('adapter_registry'),\n status: statusValidator,\n latency: v.optional(v.number()),\n errorMessage: v.optional(v.string()),\n },\n handler: async (ctx, args) => {\n const now = Date.now()\n const update: Record<string, unknown> = {\n status: args.status,\n lastHealthCheck: now,\n updatedAt: now,\n }\n\n if (args.status === 'connected') {\n update.connectedAt = now\n update.errorMessage = undefined\n }\n if (args.status === 'error' && args.errorMessage) {\n update.errorMessage = args.errorMessage\n }\n\n await ctx.db.patch(args.adapterId, update)\n\n // Log health check\n await ctx.db.insert('adapter_health_logs', {\n adapterId: args.adapterId,\n domain: (await ctx.db.get(args.adapterId))!.domain,\n status: args.status,\n latency: args.latency,\n errorMessage: args.errorMessage,\n timestamp: now,\n })\n },\n})\n\n/**\n * Update adapter configuration.\n */\nexport const updateAdapter = mutation({\n args: {\n adapterId: v.id('adapter_registry'),\n config: v.object({\n provider: v.string(),\n apiKey: v.optional(v.string()),\n baseUrl: v.optional(v.string()),\n options: v.optional(v.any()),\n }),\n },\n handler: async (ctx, args) => {\n await ctx.db.patch(args.adapterId, {\n config: args.config,\n status: 'initializing',\n updatedAt: Date.now(),\n })\n },\n})\n\n/**\n * Remove an adapter from the registry.\n */\nexport const removeAdapter = mutation({\n args: { adapterId: v.id('adapter_registry') },\n handler: async (ctx, args) => {\n // Remove health logs\n const logs = await ctx.db\n .query('adapter_health_logs')\n .withIndex('by_adapter', (q) => q.eq('adapterId', args.adapterId))\n .collect()\n for (const log of logs) {\n await ctx.db.delete(log._id)\n }\n await ctx.db.delete(args.adapterId)\n },\n})\n","// @geenius/adapters-convex — Queries\n\nimport { query } from './_generated/server'\nimport { v } from 'convex/values'\n\n/**\n * List all registered adapters.\n */\nexport const listAdapters = query({\n args: {},\n handler: async (ctx) => {\n return await ctx.db.query('adapter_registry').collect()\n },\n})\n\n/**\n * List adapters by domain.\n */\nexport const listAdaptersByDomain = query({\n args: {\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n },\n handler: async (ctx, args) => {\n return await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain', (q) => q.eq('domain', args.domain))\n .collect()\n },\n})\n\n/**\n * Get a single adapter by ID.\n */\nexport const getAdapter = query({\n args: { adapterId: v.id('adapter_registry') },\n handler: async (ctx, args) => {\n return await ctx.db.get(args.adapterId)\n },\n})\n\n/**\n * Get the active adapter for a specific domain.\n * Returns the first connected adapter, or the first adapter if none connected.\n */\nexport const getActiveAdapter = query({\n args: {\n domain: v.union(\n v.literal('db'), v.literal('auth'), v.literal('payments'),\n v.literal('ai'), v.literal('storage'), v.literal('admin'),\n ),\n },\n handler: async (ctx, args) => {\n const adapters = await ctx.db\n .query('adapter_registry')\n .withIndex('by_domain', (q) => q.eq('domain', args.domain))\n .collect()\n\n return adapters.find((a) => a.status === 'connected') ?? adapters[0] ?? null\n },\n})\n\n/**\n * Get adapter status summary — one entry per domain.\n */\nexport const getAdapterStatusSummary = query({\n args: {},\n handler: async (ctx) => {\n const all = await ctx.db.query('adapter_registry').collect()\n const domains = ['db', 'auth', 'payments', 'ai', 'storage', 'admin'] as const\n\n return domains.map((domain) => {\n const domainAdapters = all.filter((a) => a.domain === domain)\n const connected = domainAdapters.find((a) => a.status === 'connected')\n return {\n domain,\n provider: connected?.provider ?? domainAdapters[0]?.provider ?? null,\n status: connected?.status ?? domainAdapters[0]?.status ?? 'disconnected',\n count: domainAdapters.length,\n }\n })\n },\n})\n\n/**\n * Get health logs for a specific adapter.\n */\nexport const getAdapterHealthLogs = query({\n args: {\n adapterId: v.id('adapter_registry'),\n limit: v.optional(v.number()),\n },\n handler: async (ctx, args) => {\n const q = ctx.db\n .query('adapter_health_logs')\n .withIndex('by_adapter', (q) => q.eq('adapterId', args.adapterId))\n .order('desc')\n\n if (args.limit) {\n return await q.take(args.limit)\n }\n return await q.take(50)\n },\n})\n"],"mappings":"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","names":["v","v","q"]}
|
package/packages/react/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# ✦ @geenius-
|
|
1
|
+
# ✦ @geenius/adapters-react\n\n> Geenius Adapters — React hooks and providers\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius/adapters-react\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius/adapters-react';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { DbAdapter, AuthAdapter, PaymentsAdapter, AiAdapter, FileStorageAdapter, AdminAdapter, AdapterDomain, AdapterStatusInfo, AdapterStatusType, DomainAdapterConfig } from '@geenius/adapters-shared';
|
|
2
|
+
export { ADAPTER_DOMAINS, AdapterConfig, AdapterDomain, AdapterRegistryEntry, AdapterStatusInfo, AdapterStatusType, AdminAdapter, AdminMetrics, AiAdapter, AiOptions, AuthAdapter, AuthSession, AuthUser, ChatMessage, ChatResponse, CheckoutParams, CheckoutResult, DOMAIN_DESCRIPTIONS, DOMAIN_ICONS, DOMAIN_LABELS, DbAdapter, DomainAdapterConfig, FileStorageAdapter, ListOptions, ManagedUser, OAuthProvider, PaymentsAdapter, Plan, QueryFilter, StoredFile, Subscription, configureAdapters, getAdapterConfig, getProviderMeta, getProvidersForDomain, isAdaptersConfigured } from '@geenius/adapters-shared';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
interface AdapterSet {
|
|
7
|
+
db?: DbAdapter;
|
|
8
|
+
auth?: AuthAdapter;
|
|
9
|
+
payments?: PaymentsAdapter;
|
|
10
|
+
ai?: AiAdapter;
|
|
11
|
+
storage?: FileStorageAdapter;
|
|
12
|
+
admin?: AdminAdapter;
|
|
13
|
+
}
|
|
14
|
+
interface AdapterContextValue {
|
|
15
|
+
adapters: AdapterSet;
|
|
16
|
+
statuses: Record<AdapterDomain, AdapterStatusInfo>;
|
|
17
|
+
getAdapter: <K extends keyof AdapterSet>(domain: K) => NonNullable<AdapterSet[K]>;
|
|
18
|
+
isReady: (domain: AdapterDomain) => boolean;
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface AdapterProviderProps {
|
|
22
|
+
adapters: AdapterSet;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
/** Check adapter health on mount */
|
|
25
|
+
healthCheck?: boolean;
|
|
26
|
+
}
|
|
27
|
+
declare function AdapterProvider({ adapters, children, healthCheck }: AdapterProviderProps): react_jsx_runtime.JSX.Element;
|
|
28
|
+
declare function useAdapterContext(): AdapterContextValue;
|
|
29
|
+
|
|
30
|
+
/** Access the database adapter */
|
|
31
|
+
declare function useDb(): DbAdapter;
|
|
32
|
+
/** Access the auth adapter */
|
|
33
|
+
declare function useAuth(): AuthAdapter;
|
|
34
|
+
/** Access the payments adapter */
|
|
35
|
+
declare function usePayments(): PaymentsAdapter;
|
|
36
|
+
/** Access the AI adapter */
|
|
37
|
+
declare function useAi(): AiAdapter;
|
|
38
|
+
/** Access the file storage adapter */
|
|
39
|
+
declare function useStorage(): FileStorageAdapter;
|
|
40
|
+
/** Access the admin adapter */
|
|
41
|
+
declare function useAdmin(): AdminAdapter;
|
|
42
|
+
/** Get all adapter statuses */
|
|
43
|
+
declare function useAdapterStatuses(): Record<AdapterDomain, AdapterStatusInfo>;
|
|
44
|
+
/** Get status for a specific adapter domain */
|
|
45
|
+
declare function useAdapterStatus(domain: AdapterDomain): AdapterStatusInfo;
|
|
46
|
+
/** Check if adapter is ready */
|
|
47
|
+
declare function useIsAdapterReady(domain: AdapterDomain): boolean;
|
|
48
|
+
/** Access all adapters at once */
|
|
49
|
+
declare function useAdapters(): {
|
|
50
|
+
db: DbAdapter | undefined;
|
|
51
|
+
auth: AuthAdapter | undefined;
|
|
52
|
+
payments: PaymentsAdapter | undefined;
|
|
53
|
+
ai: AiAdapter | undefined;
|
|
54
|
+
storage: FileStorageAdapter | undefined;
|
|
55
|
+
admin: AdminAdapter | undefined;
|
|
56
|
+
statuses: Record<AdapterDomain, AdapterStatusInfo>;
|
|
57
|
+
isLoading: boolean;
|
|
58
|
+
isReady: (domain: AdapterDomain) => boolean;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
interface AdapterStatusBadgeProps {
|
|
62
|
+
status: AdapterStatusType;
|
|
63
|
+
showLabel?: boolean;
|
|
64
|
+
size?: 'sm' | 'md';
|
|
65
|
+
className?: string;
|
|
66
|
+
}
|
|
67
|
+
declare function AdapterStatusBadge({ status, showLabel, size, className }: AdapterStatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
|
|
69
|
+
interface AdapterCardProps {
|
|
70
|
+
domain: AdapterDomain;
|
|
71
|
+
status: AdapterStatusInfo;
|
|
72
|
+
onClick?: () => void;
|
|
73
|
+
className?: string;
|
|
74
|
+
}
|
|
75
|
+
declare function AdapterCard({ domain, status, onClick, className }: AdapterCardProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
77
|
+
interface AdapterListProps {
|
|
78
|
+
onSelect?: (domain: AdapterDomain) => void;
|
|
79
|
+
filterStatus?: AdapterStatusType;
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
declare function AdapterList({ onSelect, filterStatus, className }: AdapterListProps): react_jsx_runtime.JSX.Element;
|
|
83
|
+
|
|
84
|
+
interface AdapterConfigFormProps {
|
|
85
|
+
domain: AdapterDomain;
|
|
86
|
+
initialConfig?: DomainAdapterConfig;
|
|
87
|
+
onSave: (config: DomainAdapterConfig) => Promise<void> | void;
|
|
88
|
+
onCancel?: () => void;
|
|
89
|
+
className?: string;
|
|
90
|
+
}
|
|
91
|
+
declare function AdapterConfigForm({ domain, initialConfig, onSave, onCancel, className }: AdapterConfigFormProps): react_jsx_runtime.JSX.Element;
|
|
92
|
+
|
|
93
|
+
interface AdaptersPageProps {
|
|
94
|
+
onNavigateDetail?: (domain: AdapterDomain) => void;
|
|
95
|
+
className?: string;
|
|
96
|
+
}
|
|
97
|
+
declare function AdaptersPage({ onNavigateDetail, className }: AdaptersPageProps): react_jsx_runtime.JSX.Element;
|
|
98
|
+
|
|
99
|
+
interface AdapterDetailPageProps {
|
|
100
|
+
domain: AdapterDomain;
|
|
101
|
+
onBack?: () => void;
|
|
102
|
+
className?: string;
|
|
103
|
+
}
|
|
104
|
+
declare function AdapterDetailPage({ domain, onBack, className }: AdapterDetailPageProps): react_jsx_runtime.JSX.Element;
|
|
105
|
+
|
|
106
|
+
export { AdapterCard, type AdapterCardProps, AdapterConfigForm, type AdapterConfigFormProps, type AdapterContextValue, AdapterDetailPage, type AdapterDetailPageProps, AdapterList, type AdapterListProps, AdapterProvider, type AdapterProviderProps, type AdapterSet, AdapterStatusBadge, type AdapterStatusBadgeProps, AdaptersPage, type AdaptersPageProps, useAdapterContext, useAdapterStatus, useAdapterStatuses, useAdapters, useAdmin, useAi, useAuth, useDb, useIsAdapterReady, usePayments, useStorage };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { DbAdapter, AuthAdapter, PaymentsAdapter, AiAdapter, FileStorageAdapter, AdminAdapter, AdapterDomain, AdapterStatusInfo, AdapterStatusType, DomainAdapterConfig } from '@geenius/adapters-shared';
|
|
2
|
+
export { ADAPTER_DOMAINS, AdapterConfig, AdapterDomain, AdapterRegistryEntry, AdapterStatusInfo, AdapterStatusType, AdminAdapter, AdminMetrics, AiAdapter, AiOptions, AuthAdapter, AuthSession, AuthUser, ChatMessage, ChatResponse, CheckoutParams, CheckoutResult, DOMAIN_DESCRIPTIONS, DOMAIN_ICONS, DOMAIN_LABELS, DbAdapter, DomainAdapterConfig, FileStorageAdapter, ListOptions, ManagedUser, OAuthProvider, PaymentsAdapter, Plan, QueryFilter, StoredFile, Subscription, configureAdapters, getAdapterConfig, getProviderMeta, getProvidersForDomain, isAdaptersConfigured } from '@geenius/adapters-shared';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
interface AdapterSet {
|
|
7
|
+
db?: DbAdapter;
|
|
8
|
+
auth?: AuthAdapter;
|
|
9
|
+
payments?: PaymentsAdapter;
|
|
10
|
+
ai?: AiAdapter;
|
|
11
|
+
storage?: FileStorageAdapter;
|
|
12
|
+
admin?: AdminAdapter;
|
|
13
|
+
}
|
|
14
|
+
interface AdapterContextValue {
|
|
15
|
+
adapters: AdapterSet;
|
|
16
|
+
statuses: Record<AdapterDomain, AdapterStatusInfo>;
|
|
17
|
+
getAdapter: <K extends keyof AdapterSet>(domain: K) => NonNullable<AdapterSet[K]>;
|
|
18
|
+
isReady: (domain: AdapterDomain) => boolean;
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface AdapterProviderProps {
|
|
22
|
+
adapters: AdapterSet;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
/** Check adapter health on mount */
|
|
25
|
+
healthCheck?: boolean;
|
|
26
|
+
}
|
|
27
|
+
declare function AdapterProvider({ adapters, children, healthCheck }: AdapterProviderProps): react_jsx_runtime.JSX.Element;
|
|
28
|
+
declare function useAdapterContext(): AdapterContextValue;
|
|
29
|
+
|
|
30
|
+
/** Access the database adapter */
|
|
31
|
+
declare function useDb(): DbAdapter;
|
|
32
|
+
/** Access the auth adapter */
|
|
33
|
+
declare function useAuth(): AuthAdapter;
|
|
34
|
+
/** Access the payments adapter */
|
|
35
|
+
declare function usePayments(): PaymentsAdapter;
|
|
36
|
+
/** Access the AI adapter */
|
|
37
|
+
declare function useAi(): AiAdapter;
|
|
38
|
+
/** Access the file storage adapter */
|
|
39
|
+
declare function useStorage(): FileStorageAdapter;
|
|
40
|
+
/** Access the admin adapter */
|
|
41
|
+
declare function useAdmin(): AdminAdapter;
|
|
42
|
+
/** Get all adapter statuses */
|
|
43
|
+
declare function useAdapterStatuses(): Record<AdapterDomain, AdapterStatusInfo>;
|
|
44
|
+
/** Get status for a specific adapter domain */
|
|
45
|
+
declare function useAdapterStatus(domain: AdapterDomain): AdapterStatusInfo;
|
|
46
|
+
/** Check if adapter is ready */
|
|
47
|
+
declare function useIsAdapterReady(domain: AdapterDomain): boolean;
|
|
48
|
+
/** Access all adapters at once */
|
|
49
|
+
declare function useAdapters(): {
|
|
50
|
+
db: DbAdapter | undefined;
|
|
51
|
+
auth: AuthAdapter | undefined;
|
|
52
|
+
payments: PaymentsAdapter | undefined;
|
|
53
|
+
ai: AiAdapter | undefined;
|
|
54
|
+
storage: FileStorageAdapter | undefined;
|
|
55
|
+
admin: AdminAdapter | undefined;
|
|
56
|
+
statuses: Record<AdapterDomain, AdapterStatusInfo>;
|
|
57
|
+
isLoading: boolean;
|
|
58
|
+
isReady: (domain: AdapterDomain) => boolean;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
interface AdapterStatusBadgeProps {
|
|
62
|
+
status: AdapterStatusType;
|
|
63
|
+
showLabel?: boolean;
|
|
64
|
+
size?: 'sm' | 'md';
|
|
65
|
+
className?: string;
|
|
66
|
+
}
|
|
67
|
+
declare function AdapterStatusBadge({ status, showLabel, size, className }: AdapterStatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
|
|
69
|
+
interface AdapterCardProps {
|
|
70
|
+
domain: AdapterDomain;
|
|
71
|
+
status: AdapterStatusInfo;
|
|
72
|
+
onClick?: () => void;
|
|
73
|
+
className?: string;
|
|
74
|
+
}
|
|
75
|
+
declare function AdapterCard({ domain, status, onClick, className }: AdapterCardProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
77
|
+
interface AdapterListProps {
|
|
78
|
+
onSelect?: (domain: AdapterDomain) => void;
|
|
79
|
+
filterStatus?: AdapterStatusType;
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
declare function AdapterList({ onSelect, filterStatus, className }: AdapterListProps): react_jsx_runtime.JSX.Element;
|
|
83
|
+
|
|
84
|
+
interface AdapterConfigFormProps {
|
|
85
|
+
domain: AdapterDomain;
|
|
86
|
+
initialConfig?: DomainAdapterConfig;
|
|
87
|
+
onSave: (config: DomainAdapterConfig) => Promise<void> | void;
|
|
88
|
+
onCancel?: () => void;
|
|
89
|
+
className?: string;
|
|
90
|
+
}
|
|
91
|
+
declare function AdapterConfigForm({ domain, initialConfig, onSave, onCancel, className }: AdapterConfigFormProps): react_jsx_runtime.JSX.Element;
|
|
92
|
+
|
|
93
|
+
interface AdaptersPageProps {
|
|
94
|
+
onNavigateDetail?: (domain: AdapterDomain) => void;
|
|
95
|
+
className?: string;
|
|
96
|
+
}
|
|
97
|
+
declare function AdaptersPage({ onNavigateDetail, className }: AdaptersPageProps): react_jsx_runtime.JSX.Element;
|
|
98
|
+
|
|
99
|
+
interface AdapterDetailPageProps {
|
|
100
|
+
domain: AdapterDomain;
|
|
101
|
+
onBack?: () => void;
|
|
102
|
+
className?: string;
|
|
103
|
+
}
|
|
104
|
+
declare function AdapterDetailPage({ domain, onBack, className }: AdapterDetailPageProps): react_jsx_runtime.JSX.Element;
|
|
105
|
+
|
|
106
|
+
export { AdapterCard, type AdapterCardProps, AdapterConfigForm, type AdapterConfigFormProps, type AdapterContextValue, AdapterDetailPage, type AdapterDetailPageProps, AdapterList, type AdapterListProps, AdapterProvider, type AdapterProviderProps, type AdapterSet, AdapterStatusBadge, type AdapterStatusBadgeProps, AdaptersPage, type AdaptersPageProps, useAdapterContext, useAdapterStatus, useAdapterStatuses, useAdapters, useAdmin, useAi, useAuth, useDb, useIsAdapterReady, usePayments, useStorage };
|