/** * @module convex.config * @package @geenius/adapters/convex * @description **Metadata-only** Convex component identity for adapter-side * DB contract fixtures. Runtime provider implementations live in * `@geenius/db`; this subpath only gives host Convex projects a stable * namespace when composing Geenius adapter conformance helpers. * * IMPORTANT: this is NOT a Convex `ComponentDefinition`. It does not call * `defineComponent` / `defineApp` / `use` / `export`. Consumers that need a * real component definition compose one themselves using these metadata * fields (e.g. `defineComponent({ name: metadata.name })`). Keeping the * subpath SDK-free is intentional — the adapter package must not import * Convex runtime SDK constructors. */ type ConvexAdapterComponentConfig = { readonly name: "adapters"; readonly packageName: "@geenius/adapters"; readonly sdkFree: true; }; /** * SDK-free integration contract. Host Convex projects pass the literal `name` * to their own `defineComponent({ name })` call (which we cannot perform here * because that would require the Convex SDK). The shape is intentionally a * value-only record so it remains importable from any runtime, including * Convex action contexts that disallow non-deterministic dependencies. */ type ConvexAdapterComponentIntegration = ConvexAdapterComponentConfig & { /** * Arguments to pass into `defineComponent` in a host's `convex.config.ts`. * Kept as a literal object (no functions, no SDK references) so host code * can spread it directly: `defineComponent({ ...integration.defineArgs })`. */ readonly defineArgs: { readonly name: "adapters"; }; }; declare const component: { readonly name: "adapters"; readonly packageName: "@geenius/adapters"; readonly sdkFree: true; readonly defineArgs: { readonly name: "adapters"; }; }; export { type ConvexAdapterComponentConfig, type ConvexAdapterComponentIntegration, component as default };