UNPKG

convex

Version:

Client for the Convex Cloud

98 lines (97 loc) 3.04 kB
"use strict"; import { z } from "zod"; import { canonicalizedModulePath, componentDefinitionPath } from "./paths.js"; import { identifier, reference } from "./types.js"; import { analyzedModule, udfConfig } from "./modules.js"; import { looseObject } from "./utils.js"; export const componentEnvDependencyValidator = looseObject({ type: z.literal("value"), // Validator serialized to JSON. value: z.string(), optional: z.boolean().optional() }); export const componentDefinitionType = z.union([ looseObject({ type: z.literal("app"), httpPrefix: z.string().optional() }), looseObject({ type: z.literal("childComponent"), name: identifier }) ]); export const componentEnvBinding = z.union([ looseObject({ type: z.literal("value"), // Value serialized to JSON. value: z.string() }), looseObject({ type: z.literal("envVar"), // Name of a parent-declared env var. name: z.string() }) ]); export const componentInstantiation = looseObject({ name: identifier, path: componentDefinitionPath, env: z.array(z.tuple([identifier, componentEnvBinding])).nullish() }); export const componentExports = z.lazy( () => z.union([ looseObject({ type: z.literal("leaf"), leaf: reference }), looseObject({ type: z.literal("branch"), branch: z.array(z.tuple([identifier, componentExports])) }) ]) ); export const componentDefinitionMetadata = looseObject({ path: componentDefinitionPath, definitionType: componentDefinitionType, childComponents: z.array(componentInstantiation), httpMounts: z.record(z.string(), reference), exports: looseObject({ type: z.literal("branch"), branch: z.array(z.tuple([identifier, componentExports])) }), envVars: z.array(z.tuple([identifier, componentEnvDependencyValidator])).nullish() }); export const indexSchema = looseObject({ indexDescriptor: z.string(), fields: z.array(z.string()) }); export const vectorIndexSchema = looseObject({ indexDescriptor: z.string(), vectorField: z.string(), dimensions: z.number().optional(), filterFields: z.array(z.string()) }); export const searchIndexSchema = looseObject({ indexDescriptor: z.string(), searchField: z.string(), filterFields: z.array(z.string()) }); export const tableDefinition = looseObject({ tableName: z.string(), indexes: z.array(indexSchema), searchIndexes: z.array(searchIndexSchema).optional().nullable(), vectorIndexes: z.array(vectorIndexSchema).optional().nullable(), // We don't validate validators because of performance issues and since this // is a server returned value. documentType: z.custom() }); export const analyzedSchema = looseObject({ tables: z.array(tableDefinition), schemaValidation: z.boolean() }); export const evaluatedComponentDefinition = looseObject({ definition: componentDefinitionMetadata, schema: analyzedSchema.optional().nullable(), functions: z.record(canonicalizedModulePath, analyzedModule), udfConfig }); //# sourceMappingURL=componentDefinition.js.map