@gaganref/confect-core 10.3.1-fork.2 → 10.3.1-fork.21

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.
Files changed (88) hide show
  1. package/dist/App.d.ts +14 -3
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +6 -3
  4. package/dist/App.js.map +1 -1
  5. package/dist/Auth.d.ts +2 -2
  6. package/dist/Auth.d.ts.map +1 -1
  7. package/dist/Auth.js.map +1 -1
  8. package/dist/Callback.d.ts +3 -3
  9. package/dist/Callback.d.ts.map +1 -1
  10. package/dist/Callback.js.map +1 -1
  11. package/dist/Component.d.ts +8 -8
  12. package/dist/Component.d.ts.map +1 -1
  13. package/dist/Component.js.map +1 -1
  14. package/dist/FunctionProvenance.d.ts +2 -2
  15. package/dist/FunctionProvenance.d.ts.map +1 -1
  16. package/dist/FunctionProvenance.js.map +1 -1
  17. package/dist/FunctionSpec.d.ts +320 -4
  18. package/dist/FunctionSpec.d.ts.map +1 -1
  19. package/dist/FunctionSpec.js +35 -3
  20. package/dist/FunctionSpec.js.map +1 -1
  21. package/dist/GenericId.d.ts +2 -2
  22. package/dist/GenericId.d.ts.map +1 -1
  23. package/dist/GenericId.js.map +1 -1
  24. package/dist/GroupPath.d.ts +1 -1
  25. package/dist/GroupPath.d.ts.map +1 -1
  26. package/dist/GroupPath.js.map +1 -1
  27. package/dist/GroupSpec.d.ts +4 -4
  28. package/dist/GroupSpec.d.ts.map +1 -1
  29. package/dist/GroupSpec.js.map +1 -1
  30. package/dist/Http.d.ts +1 -1
  31. package/dist/Http.d.ts.map +1 -1
  32. package/dist/Http.js.map +1 -1
  33. package/dist/Manifest.d.ts +1 -1
  34. package/dist/Manifest.d.ts.map +1 -1
  35. package/dist/Manifest.js.map +1 -1
  36. package/dist/MiddlewareAttachment.d.ts +1 -1
  37. package/dist/MiddlewareAttachment.d.ts.map +1 -1
  38. package/dist/MiddlewareAttachment.js.map +1 -1
  39. package/dist/MiddlewareSpec.d.ts +3 -3
  40. package/dist/MiddlewareSpec.d.ts.map +1 -1
  41. package/dist/MiddlewareSpec.js.map +1 -1
  42. package/dist/Profile.d.ts +52 -0
  43. package/dist/Profile.d.ts.map +1 -0
  44. package/dist/Profile.js +15 -0
  45. package/dist/Profile.js.map +1 -0
  46. package/dist/Ref.d.ts +5 -5
  47. package/dist/Ref.d.ts.map +1 -1
  48. package/dist/Ref.js.map +1 -1
  49. package/dist/Refs.d.ts +5 -5
  50. package/dist/Refs.d.ts.map +1 -1
  51. package/dist/Refs.js.map +1 -1
  52. package/dist/SchemaToValidator.d.ts +2 -2
  53. package/dist/SchemaToValidator.d.ts.map +1 -1
  54. package/dist/SchemaToValidator.js.map +1 -1
  55. package/dist/Spec.d.ts +1 -1
  56. package/dist/Spec.d.ts.map +1 -1
  57. package/dist/Spec.js.map +1 -1
  58. package/dist/SystemFields.d.ts +2 -2
  59. package/dist/SystemFields.d.ts.map +1 -1
  60. package/dist/SystemFields.js.map +1 -1
  61. package/dist/Table.d.ts +3 -3
  62. package/dist/Table.d.ts.map +1 -1
  63. package/dist/Table.js.map +1 -1
  64. package/dist/index.d.ts +30 -29
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -1
  67. package/package.json +1 -1
  68. package/src/App.ts +20 -4
  69. package/src/Auth.ts +2 -2
  70. package/src/Callback.ts +3 -3
  71. package/src/Component.ts +11 -11
  72. package/src/FunctionProvenance.ts +3 -3
  73. package/src/FunctionSpec.ts +414 -8
  74. package/src/GenericId.ts +2 -2
  75. package/src/GroupPath.ts +1 -1
  76. package/src/GroupSpec.ts +5 -5
  77. package/src/Http.ts +1 -1
  78. package/src/Manifest.ts +1 -1
  79. package/src/MiddlewareAttachment.ts +1 -1
  80. package/src/MiddlewareSpec.ts +4 -4
  81. package/src/Profile.ts +80 -0
  82. package/src/Ref.ts +6 -6
  83. package/src/Refs.ts +5 -5
  84. package/src/SchemaToValidator.ts +3 -3
  85. package/src/Spec.ts +1 -1
  86. package/src/SystemFields.ts +2 -2
  87. package/src/Table.ts +4 -4
  88. package/src/index.ts +30 -29
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaToValidator.d.ts","sourceRoot":"","sources":["../src/SchemaToValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaToValidator.d.ts","sourceRoot":"","sources":["../src/SchemaToValidator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaToValidator.js","names":["IdScope.app","GenericId.tableName","GenericId.scope","scope"],"sources":["../src/SchemaToValidator.ts"],"sourcesContent":["import * as IdScope from \"./IdScope\";\nimport type {\n GenericId as ConvexGenericId,\n PropertyValidators,\n Validator,\n VAny,\n VArray,\n VBoolean,\n VBytes,\n VFloat64,\n VId,\n VInt64,\n VLiteral,\n VNull,\n VObject,\n VRecord,\n VString,\n VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Number from \"effect/Number\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as String from \"effect/String\";\n\nimport * as GenericId from \"./GenericId\";\nimport type {\n IsAny,\n IsOptional,\n IsRecord,\n IsRecursive,\n IsUnion,\n TypeError,\n UnionToTuple,\n} from \"./Types\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n argsSchema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): PropertyValidators => {\n const ast = Schema.toEncoded(argsSchema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", (objectsAst) =>\n Array.isReadonlyArrayEmpty(objectsAst.indexSignatures)\n ? handlePropertySignatures(objectsAst, scope)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n Effect.runSync,\n );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n schema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): Validator<any, any, any> =>\n Effect.runSync(compileAst(Schema.toEncoded(schema).ast, false, scope));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n TableSchema extends Schema.Codec<any, any>,\n> =\n ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n | VObject<any, any, any, any>\n | VUnion<any, any, any, any>\n ? Vd\n : never;\n\nexport const compileTableSchema = <TableSchema extends Schema.Codec<any, any>>(\n schema: TableSchema,\n scope: IdScope.IdScope = IdScope.app,\n): TableSchemaToTableValidator<TableSchema> => {\n const ast = Schema.toEncoded(schema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", ({ indexSignatures }) =>\n Array.isReadonlyArrayEmpty(indexSignatures)\n ? // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- The return type is derived from the input schema and cannot be recovered from the runtime AST.\n (compileAst(ast, false, scope) as Effect.Effect<any>)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.tag(\"Union\", (unionAst) => compileAst(unionAst, false, scope)),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n Effect.runSync,\n );\n};\n\n// Compiler\n\nexport type ReadonlyValue =\n | string\n | number\n | bigint\n | boolean\n | ArrayBuffer\n | ReadonlyArrayValue\n | ReadonlyRecordValue\n | null;\n\ntype ReadonlyArrayValue = readonly ReadonlyValue[];\n\nexport type ReadonlyRecordValue = {\n readonly [key: string]: ReadonlyValue | undefined;\n};\n\ntype MutableValue<T> =\n T extends ReadonlyArray<infer El>\n ? MutableValue<El>[]\n : T extends ReadonlyRecordValue\n ? { -readonly [K in keyof T]: MutableValue<Exclude<T[K], undefined>> }\n : T;\n\nexport type ValueToValidator<Vl> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny\n : [Vl] extends [string | number | bigint | boolean | null | ArrayBuffer]\n ? ConvertValueToValidator<Vl>\n : IsRecursive<Vl> extends true\n ? VAny\n : [Vl] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl>\n : TypeError<\"Provided value is not a valid Convex value\", Vl>;\n\ntype OptionalValue<Vl, Optionality> = Optionality extends \"optional\"\n ? Vl | undefined\n : Vl;\n\ntype ConvertValueToValidator<\n Vl,\n Optionality extends \"required\" | \"optional\" = \"required\",\n> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny<any, Optionality>\n : [Vl] extends [null]\n ? VNull<OptionalValue<null, Optionality>, Optionality>\n : [Vl] extends [boolean]\n ? [boolean] extends [Vl]\n ? VBoolean<OptionalValue<boolean, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : IsUnion<Vl> extends true\n ? UnionValueToValidator<Vl, Optionality>\n : [Vl] extends [number]\n ? [number] extends [Vl]\n ? VFloat64<OptionalValue<number, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [bigint]\n ? [bigint] extends [Vl]\n ? VInt64<OptionalValue<bigint, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [string]\n ? StringValueToValidator<Vl, Optionality>\n : [Vl] extends [ArrayBuffer]\n ? VBytes<OptionalValue<ArrayBuffer, Optionality>, Optionality>\n : IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : Vl extends ReadonlyArray<infer El>\n ? VArray<\n OptionalValue<MutableValue<El[]>, Optionality>,\n ConvertValueToValidator<El>,\n Optionality\n >\n : Vl extends object\n ? ObjectValueToValidator<Vl, Optionality>\n : never;\n\ntype StringValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n Vl extends ConvexGenericId<string>\n ? VId<OptionalValue<Vl, Optionality>, Optionality>\n : [string] extends [Vl]\n ? VString<OptionalValue<string, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>;\n\ntype ObjectValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecord<MutableValue<Vl>> extends true\n ? ValueToValidator<Vl[keyof Vl]> extends infer VdValue extends Validator<\n any,\n \"required\",\n any\n >\n ? VRecord<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VString,\n VdValue,\n Optionality\n >\n : never\n : ObjectFieldsToValidators<Vl> extends infer VdFields extends Record<\n string,\n any\n >\n ? VObject<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VdFields,\n Optionality\n >\n : never;\n\ntype ObjectFieldsToValidators<Vl> = {\n -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n ? IsOptional<Vl, K> extends true\n ? VAny<any, \"optional\">\n : VAny\n : undefined extends Vl[K]\n ? OptionalValueToValidator<Vl[K]>\n : [Vl[K]] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl[K]>\n : never;\n};\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n undefined extends Vl\n ? OptionalValueToValidator<Vl>\n : [Vl] extends [ReadonlyValue]\n ? ValueToValidator<Vl>\n : never;\n\ntype UnionValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : VUnion<\n OptionalValue<MutableValue<Vl>, Optionality>,\n ValueTupleToValidatorTuple<UnionToTuple<Vl>>,\n Optionality\n >;\n\ntype ValueTupleToValidatorTuple<\n VlTuple extends readonly unknown[],\n Acc extends Validator<any, \"required\", any>[] = [],\n> = VlTuple extends\n | [true, false, ...infer VlRest]\n | [false, true, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, VBoolean]>\n : VlTuple extends [infer Vl, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, ConvertValueToValidator<Vl>]>\n : Acc;\n\ntype OptionalValueToValidator<Vl> = [Vl] extends [\n (infer Val extends ReadonlyValue) | undefined,\n]\n ? ConvertValueToValidator<Val, \"optional\">\n : never;\n\nexport const compileSchema = <T, E>(\n schema: Schema.Codec<T, E>,\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n Effect.runSync(compileAst(schema.ast)) as any;\n\nexport const isRecursive = (ast: SchemaAST.AST): boolean =>\n pipe(\n ast,\n Match.value,\n Match.tag(\n \"Literal\",\n \"Null\",\n \"Boolean\",\n \"String\",\n \"Number\",\n \"BigInt\",\n \"Unknown\",\n \"Any\",\n \"Declaration\",\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () => false,\n ),\n Match.tag(\"Union\", ({ types }) =>\n Array.some(types, (type) => isRecursive(type)),\n ),\n Match.tag(\"Objects\", ({ propertySignatures }) =>\n Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n ),\n Match.tag(\n \"Arrays\",\n ({ elements, rest }) =>\n Array.some(elements, (element) => isRecursive(element)) ||\n Array.some(rest, (element) => isRecursive(element)),\n ),\n Match.tag(\"Suspend\", () => true),\n Match.exhaustive,\n );\n\nexport const compileAst = (\n ast: SchemaAST.AST,\n isOptionalPropertyOfTypeLiteral = false,\n scope: IdScope.IdScope = IdScope.app,\n): Effect.Effect<\n Validator<any, any, any>,\n | UnsupportedSchemaTypeError\n | UnsupportedPropertySignatureKeyTypeError\n | IndexSignaturesAreNotSupportedError\n | MixedIndexAndPropertySignaturesAreNotSupportedError\n | OptionalTupleElementsAreNotSupportedError\n | EmptyTupleIsNotSupportedError\n | EmptyUnionIsNotSupportedError\n> =>\n isRecursive(ast)\n ? Effect.succeed(v.any())\n : pipe(\n ast,\n Match.value,\n Match.tag(\"Literal\", ({ literal }) =>\n pipe(\n literal,\n Match.value,\n Match.whenOr(\n Match.string,\n Match.number,\n Match.bigint,\n Match.boolean,\n (l) => v.literal(l),\n ),\n Match.exhaustive,\n Effect.succeed,\n ),\n ),\n Match.tag(\"Null\", () => Effect.succeed(v.null())),\n Match.tag(\"Boolean\", () => Effect.succeed(v.boolean())),\n Match.tag(\"String\", (stringAst) =>\n GenericId.tableName(stringAst).pipe(\n Option.match({\n onNone: () => Effect.succeed(v.string()),\n onSome: (tableName) =>\n Effect.succeed(\n GenericId.scope(stringAst) === scope\n ? v.id(tableName)\n : v.string(),\n ),\n }),\n ),\n ),\n Match.tag(\"Number\", () => Effect.succeed(v.float64())),\n Match.tag(\"BigInt\", () => Effect.succeed(v.int64())),\n Match.tag(\"Union\", (unionAst) =>\n handleUnion(unionAst, isOptionalPropertyOfTypeLiteral, scope),\n ),\n Match.tag(\"Objects\", (objectsAst) => handleObjects(objectsAst, scope)),\n Match.tag(\"Arrays\", (arraysAst) => handleArrays(arraysAst, scope)),\n Match.tag(\"Unknown\", \"Any\", () => Effect.succeed(v.any())),\n Match.tag(\"Declaration\", (declaration) =>\n Effect.mapBoth(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Codec inputs are context-free, but Effect's SchemaAST.DeclarationRun erases their requirements to `any`.\n declaration.run(declaration.typeParameters)(\n new ArrayBuffer(0),\n declaration,\n {},\n ) as Effect.Effect<ArrayBuffer, unknown, never>,\n {\n onSuccess: () => v.bytes(),\n onFailure: () =>\n new UnsupportedSchemaTypeError({\n schemaType: declaration._tag,\n }),\n },\n ),\n ),\n Match.tag(\"Suspend\", () => Effect.succeed(v.any())),\n Match.tag(\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () =>\n Effect.fail(\n new UnsupportedSchemaTypeError({\n schemaType: ast._tag,\n }),\n ),\n ),\n Match.exhaustive,\n );\n\nconst handleUnion = (\n { types }: SchemaAST.Union,\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) => handleUnionTypes(types, isOptionalPropertyOfTypeLiteral, scope);\n\nconst handleUnionTypes = Effect.fnUntraced(function* (\n types: SchemaAST.Union[\"types\"],\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) {\n const members = isOptionalPropertyOfTypeLiteral\n ? Array.filter(types, Predicate.not(SchemaAST.isUndefined))\n : types;\n\n const [firstValidator, secondValidator, ...restValidators] =\n yield* Effect.all(\n Array.map(members, (type) => compileAst(type, false, scope)),\n );\n\n if (firstValidator === undefined) {\n return yield* new EmptyUnionIsNotSupportedError();\n } else if (secondValidator === undefined) {\n return firstValidator;\n } else {\n return v.union(firstValidator, secondValidator, ...restValidators);\n }\n});\n\nconst handleObjects = (objectsAst: SchemaAST.Objects, scope: IdScope.IdScope) =>\n pipe(\n objectsAst.indexSignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(handlePropertySignatures(objectsAst, scope), v.object),\n onSome: ({ parameter, type }) =>\n pipe(\n objectsAst.propertySignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(\n Effect.all({\n parameter_: compileAst(parameter, false, scope),\n type_: compileAst(type, false, scope),\n }),\n ({ parameter_, type_ }) => v.record(parameter_, type_),\n ),\n onSome: () =>\n Effect.fail(\n new MixedIndexAndPropertySignaturesAreNotSupportedError(),\n ),\n }),\n ),\n }),\n );\n\nconst handleArrays = (\n { elements, rest }: SchemaAST.Arrays,\n scope: IdScope.IdScope,\n) => handleArrayElements(elements, rest, scope);\n\nconst handleArrayElements = Effect.fnUntraced(function* (\n elements: SchemaAST.Arrays[\"elements\"],\n rest: SchemaAST.Arrays[\"rest\"],\n scope: IdScope.IdScope,\n) {\n const [f, s, ...r] = elements;\n\n const elementToValidator = (element: SchemaAST.AST) =>\n SchemaAST.isOptional(element)\n ? Effect.fail(new OptionalTupleElementsAreNotSupportedError())\n : compileAst(element, false, scope);\n\n const arrayItemsValidator = yield* f === undefined\n ? pipe(\n rest,\n Array.head,\n Option.match({\n onNone: () => Effect.fail(new EmptyTupleIsNotSupportedError()),\n onSome: (type) => compileAst(type, false, scope),\n }),\n )\n : s === undefined\n ? elementToValidator(f)\n : Effect.gen(function* () {\n const firstValidator = yield* elementToValidator(f);\n const secondValidator = yield* elementToValidator(s);\n const restValidators = yield* Effect.forEach(r, elementToValidator);\n\n return v.union(firstValidator, secondValidator, ...restValidators);\n });\n\n return v.array(arrayItemsValidator);\n});\n\nconst handlePropertySignatures = (\n objectsAst: SchemaAST.Objects,\n scope: IdScope.IdScope,\n) =>\n pipe(\n objectsAst.propertySignatures,\n Effect.forEach(({ type, name }) => {\n const isOptional = SchemaAST.isOptional(type);\n if (String.isString(name)) {\n // Somehow, somewhere, keys of type number are being coerced to strings…\n return Option.match(Number.parse(name), {\n onNone: () =>\n Effect.gen(function* () {\n const validator = yield* compileAst(type, isOptional, scope);\n\n return {\n propertyName: name,\n validator: isOptional ? v.optional(validator) : validator,\n };\n }),\n onSome: (number) =>\n Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({\n propertyKey: number,\n }),\n ),\n });\n } else {\n return Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }),\n );\n }\n }),\n Effect.andThen((propertyNamesWithValidators) =>\n pipe(\n propertyNamesWithValidators,\n Array.reduce(\n {} as Record<string, Validator<any, any, any>>,\n (acc, { propertyName, validator }) => ({\n [propertyName]: validator,\n ...acc,\n }),\n ),\n Effect.succeed,\n ),\n ),\n );\n\n// Errors\n\nexport class TopLevelMustBeObjectError extends Data.TaggedError(\n \"TopLevelMustBeObjectError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object\";\n }\n /* v8 ignore stop */\n}\n\nexport class TopLevelMustBeObjectOrUnionError extends Data.TaggedError(\n \"TopLevelMustBeObjectOrUnionError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object or a union\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedPropertySignatureKeyTypeError extends Data.TaggedError(\n \"UnsupportedPropertySignatureKeyTypeError\",\n)<{\n readonly propertyKey: number | symbol;\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this.propertyKey}' but only 'string' properties are supported.`;\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyTupleIsNotSupportedError extends Data.TaggedError(\n \"EmptyTupleIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Tuple must have at least one element\";\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyUnionIsNotSupportedError extends Data.TaggedError(\n \"EmptyUnionIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Union must have at least one member that compiles to a validator\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedSchemaTypeError extends Data.TaggedError(\n \"UnsupportedSchemaTypeError\",\n)<{\n readonly schemaType: SchemaAST.AST[\"_tag\"];\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported schema type '${this.schemaType}'`;\n }\n /* v8 ignore stop */\n}\n\nexport class IndexSignaturesAreNotSupportedError extends Data.TaggedError(\n \"IndexSignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Index signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class MixedIndexAndPropertySignaturesAreNotSupportedError extends Data.TaggedError(\n \"MixedIndexAndPropertySignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Mixed index and property signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class OptionalTupleElementsAreNotSupportedError extends Data.TaggedError(\n \"OptionalTupleElementsAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Optional tuple elements are not supported\";\n }\n /* v8 ignore stop */\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAa,qBACX,YACA,QAAyBA,QACF;CACvB,MAAM,MAAM,OAAO,UAAU,UAAU,CAAC,CAAC;CAEzC,OAAO,KACL,KACA,MAAM,OACN,MAAM,IAAI,YAAY,eACpB,MAAM,qBAAqB,WAAW,eAAe,IACjD,yBAAyB,YAAY,KAAK,IAC1C,OAAO,KAAK,IAAI,oCAAoC,CAAC,CAC3D,GACA,MAAM,aAAa,OAAO,KAAK,IAAI,0BAA0B,CAAC,CAAC,GAC/D,OAAO,OACT;AACF;AAIA,MAAa,wBACX,QACA,QAAyBA,QAEzB,OAAO,QAAQ,WAAW,OAAO,UAAU,MAAM,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC;AAgBvE,MAAa,sBACX,QACA,QAAyBA,QACoB;CAC7C,MAAM,MAAM,OAAO,UAAU,MAAM,CAAC,CAAC;CAErC,OAAO,KACL,KACA,MAAM,OACN,MAAM,IAAI,YAAY,EAAE,sBACtB,MAAM,qBAAqB,eAAe,IAErC,WAAW,KAAK,OAAO,KAAK,IAC7B,OAAO,KAAK,IAAI,oCAAoC,CAAC,CAC3D,GACA,MAAM,IAAI,UAAU,aAAa,WAAW,UAAU,OAAO,KAAK,CAAC,GACnE,MAAM,aAAa,OAAO,KAAK,IAAI,iCAAiC,CAAC,CAAC,GACtE,OAAO,OACT;AACF;AA+JA,MAAa,iBACX,WAEA,OAAO,QAAQ,WAAW,OAAO,GAAG,CAAC;AAEvC,MAAa,eAAe,QAC1B,KACE,KACA,MAAM,OACN,MAAM,IACJ,WACA,QACA,WACA,UACA,UACA,UACA,WACA,OACA,eACA,gBACA,UACA,aACA,QACA,SACA,QACA,mBACA,uBACM,KACR,GACA,MAAM,IAAI,UAAU,EAAE,YACpB,MAAM,KAAK,QAAQ,SAAS,YAAY,IAAI,CAAC,CAC/C,GACA,MAAM,IAAI,YAAY,EAAE,yBACtB,MAAM,KAAK,qBAAqB,EAAE,WAAW,YAAY,IAAI,CAAC,CAChE,GACA,MAAM,IACJ,WACC,EAAE,UAAU,WACX,MAAM,KAAK,WAAW,YAAY,YAAY,OAAO,CAAC,KACtD,MAAM,KAAK,OAAO,YAAY,YAAY,OAAO,CAAC,CACtD,GACA,MAAM,IAAI,iBAAiB,IAAI,GAC/B,MAAM,UACR;AAEF,MAAa,cACX,KACA,kCAAkC,OAClC,UAAyBA,QAWzB,YAAY,GAAG,IACX,OAAO,QAAQ,EAAE,IAAI,CAAC,IACtB,KACE,KACA,MAAM,OACN,MAAM,IAAI,YAAY,EAAE,cACtB,KACE,SACA,MAAM,OACN,MAAM,OACJ,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,UACL,MAAM,EAAE,QAAQ,CAAC,CACpB,GACA,MAAM,YACN,OAAO,OACT,CACF,GACA,MAAM,IAAI,cAAc,OAAO,QAAQ,EAAE,KAAK,CAAC,CAAC,GAChD,MAAM,IAAI,iBAAiB,OAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC,GACtD,MAAM,IAAI,WAAW,cACnBC,UAAoB,SAAS,CAAC,CAAC,KAC7B,OAAO,MAAM;CACX,cAAc,OAAO,QAAQ,EAAE,OAAO,CAAC;CACvC,SAAS,cACP,OAAO,QACLC,MAAgB,SAAS,MAAMC,UAC3B,EAAE,GAAG,SAAS,IACd,EAAE,OAAO,CACf;AACJ,CAAC,CACH,CACF,GACA,MAAM,IAAI,gBAAgB,OAAO,QAAQ,EAAE,QAAQ,CAAC,CAAC,GACrD,MAAM,IAAI,gBAAgB,OAAO,QAAQ,EAAE,MAAM,CAAC,CAAC,GACnD,MAAM,IAAI,UAAU,aAClB,YAAY,UAAU,iCAAiCA,OAAK,CAC9D,GACA,MAAM,IAAI,YAAY,eAAe,cAAc,YAAYA,OAAK,CAAC,GACrE,MAAM,IAAI,WAAW,cAAc,aAAa,WAAWA,OAAK,CAAC,GACjE,MAAM,IAAI,WAAW,aAAa,OAAO,QAAQ,EAAE,IAAI,CAAC,CAAC,GACzD,MAAM,IAAI,gBAAgB,gBACxB,OAAO,QAEL,YAAY,IAAI,YAAY,cAAc,CAAC,iBACzC,IAAI,YAAY,CAAC,GACjB,aACA,CAAC,CACH,GACA;CACE,iBAAiB,EAAE,MAAM;CACzB,iBACE,IAAI,2BAA2B,EAC7B,YAAY,YAAY,KAC1B,CAAC;AACL,CACF,CACF,GACA,MAAM,IAAI,iBAAiB,OAAO,QAAQ,EAAE,IAAI,CAAC,CAAC,GAClD,MAAM,IACJ,gBACA,UACA,aACA,QACA,SACA,QACA,mBACA,uBAEE,OAAO,KACL,IAAI,2BAA2B,EAC7B,YAAY,IAAI,KAClB,CAAC,CACH,CACJ,GACA,MAAM,UACR;AAEN,MAAM,eACJ,EAAE,SACF,iCACA,UACG,iBAAiB,OAAO,iCAAiC,KAAK;AAEnE,MAAM,mBAAmB,OAAO,WAAW,WACzC,OACA,iCACA,OACA;CACA,MAAM,UAAU,kCACZ,MAAM,OAAO,OAAO,UAAU,IAAI,UAAU,WAAW,CAAC,IACxD;CAEJ,MAAM,CAAC,gBAAgB,iBAAiB,GAAG,kBACzC,OAAO,OAAO,IACZ,MAAM,IAAI,UAAU,SAAS,WAAW,MAAM,OAAO,KAAK,CAAC,CAC7D;CAEF,IAAI,mBAAmB,KAAA,GACrB,OAAO,OAAO,IAAI,8BAA8B;MAC3C,IAAI,oBAAoB,KAAA,GAC7B,OAAO;MAEP,OAAO,EAAE,MAAM,gBAAgB,iBAAiB,GAAG,cAAc;AAErE,CAAC;AAED,MAAM,iBAAiB,YAA+B,UACpD,KACE,WAAW,iBACX,MAAM,MACN,OAAO,MAAM;CACX,cACE,OAAO,IAAI,yBAAyB,YAAY,KAAK,GAAG,EAAE,MAAM;CAClE,SAAS,EAAE,WAAW,WACpB,KACE,WAAW,oBACX,MAAM,MACN,OAAO,MAAM;EACX,cACE,OAAO,IACL,OAAO,IAAI;GACT,YAAY,WAAW,WAAW,OAAO,KAAK;GAC9C,OAAO,WAAW,MAAM,OAAO,KAAK;EACtC,CAAC,IACA,EAAE,YAAY,YAAY,EAAE,OAAO,YAAY,KAAK,CACvD;EACF,cACE,OAAO,KACL,IAAI,oDAAoD,CAC1D;CACJ,CAAC,CACH;AACJ,CAAC,CACH;AAEF,MAAM,gBACJ,EAAE,UAAU,QACZ,UACG,oBAAoB,UAAU,MAAM,KAAK;AAE9C,MAAM,sBAAsB,OAAO,WAAW,WAC5C,UACA,MACA,OACA;CACA,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK;CAErB,MAAM,sBAAsB,YAC1B,UAAU,WAAW,OAAO,IACxB,OAAO,KAAK,IAAI,0CAA0C,CAAC,IAC3D,WAAW,SAAS,OAAO,KAAK;CAEtC,MAAM,sBAAsB,OAAO,MAAM,KAAA,IACrC,KACE,MACA,MAAM,MACN,OAAO,MAAM;EACX,cAAc,OAAO,KAAK,IAAI,8BAA8B,CAAC;EAC7D,SAAS,SAAS,WAAW,MAAM,OAAO,KAAK;CACjD,CAAC,CACH,IACA,MAAM,KAAA,IACJ,mBAAmB,CAAC,IACpB,OAAO,IAAI,aAAa;EACtB,MAAM,iBAAiB,OAAO,mBAAmB,CAAC;EAClD,MAAM,kBAAkB,OAAO,mBAAmB,CAAC;EACnD,MAAM,iBAAiB,OAAO,OAAO,QAAQ,GAAG,kBAAkB;EAElE,OAAO,EAAE,MAAM,gBAAgB,iBAAiB,GAAG,cAAc;CACnE,CAAC;CAEP,OAAO,EAAE,MAAM,mBAAmB;AACpC,CAAC;AAED,MAAM,4BACJ,YACA,UAEA,KACE,WAAW,oBACX,OAAO,SAAS,EAAE,MAAM,WAAW;CACjC,MAAM,aAAa,UAAU,WAAW,IAAI;CAC5C,IAAI,OAAO,SAAS,IAAI,GAEtB,OAAO,OAAO,MAAM,OAAO,MAAM,IAAI,GAAG;EACtC,cACE,OAAO,IAAI,aAAa;GACtB,MAAM,YAAY,OAAO,WAAW,MAAM,YAAY,KAAK;GAE3D,OAAO;IACL,cAAc;IACd,WAAW,aAAa,EAAE,SAAS,SAAS,IAAI;GAClD;EACF,CAAC;EACH,SAAS,WACP,OAAO,KACL,IAAI,yCAAyC,EAC3C,aAAa,OACf,CAAC,CACH;CACJ,CAAC;MAED,OAAO,OAAO,KACZ,IAAI,yCAAyC,EAAE,aAAa,KAAK,CAAC,CACpE;AAEJ,CAAC,GACD,OAAO,SAAS,gCACd,KACE,6BACA,MAAM,OACJ,CAAC,IACA,KAAK,EAAE,cAAc,iBAAiB;EACpC,eAAe;CAChB,GAAG;AACL,EACF,GACA,OAAO,OACT,CACF,CACF;AAIF,IAAa,4BAAb,cAA+C,KAAK,YAClD,2BACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,mCAAb,cAAsD,KAAK,YACzD,kCACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,2CAAb,cAA8D,KAAK,YACjE,0CACF,CAAC,CAEE;;CAED,IAAa,UAAU;EACrB,OAAO,mCAAmC,KAAK,YAAY,SAAS,EAAE,0BAA0B,OAAO,KAAK,YAAY;CAC1H;AAEF;AAEA,IAAa,gCAAb,cAAmD,KAAK,YACtD,+BACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,gCAAb,cAAmD,KAAK,YACtD,+BACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,6BAAb,cAAgD,KAAK,YACnD,4BACF,CAAC,CAEE;;CAED,IAAa,UAAU;EACrB,OAAO,4BAA4B,KAAK,WAAW;CACrD;AAEF;AAEA,IAAa,sCAAb,cAAyD,KAAK,YAC5D,qCACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,sDAAb,cAAyE,KAAK,YAC5E,qDACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF;AAEA,IAAa,4CAAb,cAA+D,KAAK,YAClE,2CACF,CAAC,CAAC;;CAEA,IAAa,UAAU;EACrB,OAAO;CACT;AAEF"}
1
+ {"version":3,"file":"SchemaToValidator.js","names":["IdScope.app","GenericId.tableName","GenericId.scope","scope"],"sources":["../src/SchemaToValidator.ts"],"sourcesContent":["import * as IdScope from \"./IdScope.js\";\nimport type {\n GenericId as ConvexGenericId,\n PropertyValidators,\n Validator,\n VAny,\n VArray,\n VBoolean,\n VBytes,\n VFloat64,\n VId,\n VInt64,\n VLiteral,\n VNull,\n VObject,\n VRecord,\n VString,\n VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Number from \"effect/Number\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as String from \"effect/String\";\n\nimport * as GenericId from \"./GenericId.js\";\nimport type {\n IsAny,\n IsOptional,\n IsRecord,\n IsRecursive,\n IsUnion,\n TypeError,\n UnionToTuple,\n} from \"./Types.js\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n argsSchema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): PropertyValidators => {\n const ast = Schema.toEncoded(argsSchema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", (objectsAst) =>\n Array.isReadonlyArrayEmpty(objectsAst.indexSignatures)\n ? handlePropertySignatures(objectsAst, scope)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n Effect.runSync,\n );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n schema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): Validator<any, any, any> =>\n Effect.runSync(compileAst(Schema.toEncoded(schema).ast, false, scope));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n TableSchema extends Schema.Codec<any, any>,\n> =\n ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n | VObject<any, any, any, any>\n | VUnion<any, any, any, any>\n ? Vd\n : never;\n\nexport const compileTableSchema = <TableSchema extends Schema.Codec<any, any>>(\n schema: TableSchema,\n scope: IdScope.IdScope = IdScope.app,\n): TableSchemaToTableValidator<TableSchema> => {\n const ast = Schema.toEncoded(schema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", ({ indexSignatures }) =>\n Array.isReadonlyArrayEmpty(indexSignatures)\n ? // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- The return type is derived from the input schema and cannot be recovered from the runtime AST.\n (compileAst(ast, false, scope) as Effect.Effect<any>)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.tag(\"Union\", (unionAst) => compileAst(unionAst, false, scope)),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n Effect.runSync,\n );\n};\n\n// Compiler\n\nexport type ReadonlyValue =\n | string\n | number\n | bigint\n | boolean\n | ArrayBuffer\n | ReadonlyArrayValue\n | ReadonlyRecordValue\n | null;\n\ntype ReadonlyArrayValue = readonly ReadonlyValue[];\n\nexport type ReadonlyRecordValue = {\n readonly [key: string]: ReadonlyValue | undefined;\n};\n\ntype MutableValue<T> =\n T extends ReadonlyArray<infer El>\n ? MutableValue<El>[]\n : T extends ReadonlyRecordValue\n ? { -readonly [K in keyof T]: MutableValue<Exclude<T[K], undefined>> }\n : T;\n\nexport type ValueToValidator<Vl> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny\n : [Vl] extends [string | number | bigint | boolean | null | ArrayBuffer]\n ? ConvertValueToValidator<Vl>\n : IsRecursive<Vl> extends true\n ? VAny\n : [Vl] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl>\n : TypeError<\"Provided value is not a valid Convex value\", Vl>;\n\ntype OptionalValue<Vl, Optionality> = Optionality extends \"optional\"\n ? Vl | undefined\n : Vl;\n\ntype ConvertValueToValidator<\n Vl,\n Optionality extends \"required\" | \"optional\" = \"required\",\n> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny<any, Optionality>\n : [Vl] extends [null]\n ? VNull<OptionalValue<null, Optionality>, Optionality>\n : [Vl] extends [boolean]\n ? [boolean] extends [Vl]\n ? VBoolean<OptionalValue<boolean, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : IsUnion<Vl> extends true\n ? UnionValueToValidator<Vl, Optionality>\n : [Vl] extends [number]\n ? [number] extends [Vl]\n ? VFloat64<OptionalValue<number, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [bigint]\n ? [bigint] extends [Vl]\n ? VInt64<OptionalValue<bigint, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [string]\n ? StringValueToValidator<Vl, Optionality>\n : [Vl] extends [ArrayBuffer]\n ? VBytes<OptionalValue<ArrayBuffer, Optionality>, Optionality>\n : IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : Vl extends ReadonlyArray<infer El>\n ? VArray<\n OptionalValue<MutableValue<El[]>, Optionality>,\n ConvertValueToValidator<El>,\n Optionality\n >\n : Vl extends object\n ? ObjectValueToValidator<Vl, Optionality>\n : never;\n\ntype StringValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n Vl extends ConvexGenericId<string>\n ? VId<OptionalValue<Vl, Optionality>, Optionality>\n : [string] extends [Vl]\n ? VString<OptionalValue<string, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>;\n\ntype ObjectValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecord<MutableValue<Vl>> extends true\n ? ValueToValidator<Vl[keyof Vl]> extends infer VdValue extends Validator<\n any,\n \"required\",\n any\n >\n ? VRecord<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VString,\n VdValue,\n Optionality\n >\n : never\n : ObjectFieldsToValidators<Vl> extends infer VdFields extends Record<\n string,\n any\n >\n ? VObject<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VdFields,\n Optionality\n >\n : never;\n\ntype ObjectFieldsToValidators<Vl> = {\n -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n ? IsOptional<Vl, K> extends true\n ? VAny<any, \"optional\">\n : VAny\n : undefined extends Vl[K]\n ? OptionalValueToValidator<Vl[K]>\n : [Vl[K]] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl[K]>\n : never;\n};\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n undefined extends Vl\n ? OptionalValueToValidator<Vl>\n : [Vl] extends [ReadonlyValue]\n ? ValueToValidator<Vl>\n : never;\n\ntype UnionValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : VUnion<\n OptionalValue<MutableValue<Vl>, Optionality>,\n ValueTupleToValidatorTuple<UnionToTuple<Vl>>,\n Optionality\n >;\n\ntype ValueTupleToValidatorTuple<\n VlTuple extends readonly unknown[],\n Acc extends Validator<any, \"required\", any>[] = [],\n> = VlTuple extends\n | [true, false, ...infer VlRest]\n | [false, true, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, VBoolean]>\n : VlTuple extends [infer Vl, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, ConvertValueToValidator<Vl>]>\n : Acc;\n\ntype OptionalValueToValidator<Vl> = [Vl] extends [\n (infer Val extends ReadonlyValue) | undefined,\n]\n ? ConvertValueToValidator<Val, \"optional\">\n : never;\n\nexport const compileSchema = <T, E>(\n schema: Schema.Codec<T, E>,\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n Effect.runSync(compileAst(schema.ast)) as any;\n\nexport const isRecursive = (ast: SchemaAST.AST): boolean =>\n pipe(\n ast,\n Match.value,\n Match.tag(\n \"Literal\",\n \"Null\",\n \"Boolean\",\n \"String\",\n \"Number\",\n \"BigInt\",\n \"Unknown\",\n \"Any\",\n \"Declaration\",\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () => false,\n ),\n Match.tag(\"Union\", ({ types }) =>\n Array.some(types, (type) => isRecursive(type)),\n ),\n Match.tag(\"Objects\", ({ propertySignatures }) =>\n Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n ),\n Match.tag(\n \"Arrays\",\n ({ elements, rest }) =>\n Array.some(elements, (element) => isRecursive(element)) ||\n Array.some(rest, (element) => isRecursive(element)),\n ),\n Match.tag(\"Suspend\", () => true),\n Match.exhaustive,\n );\n\nexport const compileAst = (\n ast: SchemaAST.AST,\n isOptionalPropertyOfTypeLiteral = false,\n scope: IdScope.IdScope = IdScope.app,\n): Effect.Effect<\n Validator<any, any, any>,\n | UnsupportedSchemaTypeError\n | UnsupportedPropertySignatureKeyTypeError\n | IndexSignaturesAreNotSupportedError\n | MixedIndexAndPropertySignaturesAreNotSupportedError\n | OptionalTupleElementsAreNotSupportedError\n | EmptyTupleIsNotSupportedError\n | EmptyUnionIsNotSupportedError\n> =>\n isRecursive(ast)\n ? Effect.succeed(v.any())\n : pipe(\n ast,\n Match.value,\n Match.tag(\"Literal\", ({ literal }) =>\n pipe(\n literal,\n Match.value,\n Match.whenOr(\n Match.string,\n Match.number,\n Match.bigint,\n Match.boolean,\n (l) => v.literal(l),\n ),\n Match.exhaustive,\n Effect.succeed,\n ),\n ),\n Match.tag(\"Null\", () => Effect.succeed(v.null())),\n Match.tag(\"Boolean\", () => Effect.succeed(v.boolean())),\n Match.tag(\"String\", (stringAst) =>\n GenericId.tableName(stringAst).pipe(\n Option.match({\n onNone: () => Effect.succeed(v.string()),\n onSome: (tableName) =>\n Effect.succeed(\n GenericId.scope(stringAst) === scope\n ? v.id(tableName)\n : v.string(),\n ),\n }),\n ),\n ),\n Match.tag(\"Number\", () => Effect.succeed(v.float64())),\n Match.tag(\"BigInt\", () => Effect.succeed(v.int64())),\n Match.tag(\"Union\", (unionAst) =>\n handleUnion(unionAst, isOptionalPropertyOfTypeLiteral, scope),\n ),\n Match.tag(\"Objects\", (objectsAst) => handleObjects(objectsAst, scope)),\n Match.tag(\"Arrays\", (arraysAst) => handleArrays(arraysAst, scope)),\n Match.tag(\"Unknown\", \"Any\", () => Effect.succeed(v.any())),\n Match.tag(\"Declaration\", (declaration) =>\n Effect.mapBoth(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Codec inputs are context-free, but Effect's SchemaAST.DeclarationRun erases their requirements to `any`.\n declaration.run(declaration.typeParameters)(\n new ArrayBuffer(0),\n declaration,\n {},\n ) as Effect.Effect<ArrayBuffer, unknown, never>,\n {\n onSuccess: () => v.bytes(),\n onFailure: () =>\n new UnsupportedSchemaTypeError({\n schemaType: declaration._tag,\n }),\n },\n ),\n ),\n Match.tag(\"Suspend\", () => Effect.succeed(v.any())),\n Match.tag(\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () =>\n Effect.fail(\n new UnsupportedSchemaTypeError({\n schemaType: ast._tag,\n }),\n ),\n ),\n Match.exhaustive,\n );\n\nconst handleUnion = (\n { types }: SchemaAST.Union,\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) => handleUnionTypes(types, isOptionalPropertyOfTypeLiteral, scope);\n\nconst handleUnionTypes = Effect.fnUntraced(function* (\n types: SchemaAST.Union[\"types\"],\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) {\n const members = isOptionalPropertyOfTypeLiteral\n ? Array.filter(types, Predicate.not(SchemaAST.isUndefined))\n : types;\n\n const [firstValidator, secondValidator, ...restValidators] =\n yield* Effect.all(\n Array.map(members, (type) => compileAst(type, false, scope)),\n );\n\n if (firstValidator === undefined) {\n return yield* new EmptyUnionIsNotSupportedError();\n } else if (secondValidator === undefined) {\n return firstValidator;\n } else {\n return v.union(firstValidator, secondValidator, ...restValidators);\n }\n});\n\nconst handleObjects = (objectsAst: SchemaAST.Objects, scope: IdScope.IdScope) =>\n pipe(\n objectsAst.indexSignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(handlePropertySignatures(objectsAst, scope), v.object),\n onSome: ({ parameter, type }) =>\n pipe(\n objectsAst.propertySignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(\n Effect.all({\n parameter_: compileAst(parameter, false, scope),\n type_: compileAst(type, false, scope),\n }),\n ({ parameter_, type_ }) => v.record(parameter_, type_),\n ),\n onSome: () =>\n Effect.fail(\n new MixedIndexAndPropertySignaturesAreNotSupportedError(),\n ),\n }),\n ),\n }),\n );\n\nconst handleArrays = (\n { elements, rest }: SchemaAST.Arrays,\n scope: IdScope.IdScope,\n) => handleArrayElements(elements, rest, scope);\n\nconst handleArrayElements = Effect.fnUntraced(function* (\n elements: SchemaAST.Arrays[\"elements\"],\n rest: SchemaAST.Arrays[\"rest\"],\n scope: IdScope.IdScope,\n) {\n const [f, s, ...r] = elements;\n\n const elementToValidator = (element: SchemaAST.AST) =>\n SchemaAST.isOptional(element)\n ? Effect.fail(new OptionalTupleElementsAreNotSupportedError())\n : compileAst(element, false, scope);\n\n const arrayItemsValidator = yield* f === undefined\n ? pipe(\n rest,\n Array.head,\n Option.match({\n onNone: () => Effect.fail(new EmptyTupleIsNotSupportedError()),\n onSome: (type) => compileAst(type, false, scope),\n }),\n )\n : s === undefined\n ? elementToValidator(f)\n : Effect.gen(function* () {\n const firstValidator = yield* elementToValidator(f);\n const secondValidator = yield* elementToValidator(s);\n const restValidators = yield* Effect.forEach(r, elementToValidator);\n\n return v.union(firstValidator, secondValidator, ...restValidators);\n });\n\n return v.array(arrayItemsValidator);\n});\n\nconst handlePropertySignatures = (\n objectsAst: SchemaAST.Objects,\n scope: IdScope.IdScope,\n) =>\n pipe(\n objectsAst.propertySignatures,\n Effect.forEach(({ type, name }) => {\n const isOptional = SchemaAST.isOptional(type);\n if (String.isString(name)) {\n // Somehow, somewhere, keys of type number are being coerced to strings…\n return Option.match(Number.parse(name), {\n onNone: () =>\n Effect.gen(function* () {\n const validator = yield* compileAst(type, isOptional, scope);\n\n return {\n propertyName: name,\n validator: isOptional ? v.optional(validator) : validator,\n };\n }),\n onSome: (number) =>\n Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({\n propertyKey: number,\n }),\n ),\n });\n } else {\n return Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }),\n );\n }\n }),\n Effect.andThen((propertyNamesWithValidators) =>\n pipe(\n propertyNamesWithValidators,\n Array.reduce(\n {} as Record<string, Validator<any, any, any>>,\n (acc, { propertyName, validator }) => ({\n [propertyName]: validator,\n ...acc,\n }),\n ),\n Effect.succeed,\n ),\n ),\n );\n\n// Errors\n\nexport class TopLevelMustBeObjectError extends Data.TaggedError(\n \"TopLevelMustBeObjectError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object\";\n }\n /* v8 ignore stop */\n}\n\nexport class TopLevelMustBeObjectOrUnionError extends Data.TaggedError(\n \"TopLevelMustBeObjectOrUnionError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object or a union\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedPropertySignatureKeyTypeError extends Data.TaggedError(\n \"UnsupportedPropertySignatureKeyTypeError\",\n)<{\n readonly propertyKey: number | symbol;\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this.propertyKey}' but only 'string' properties are supported.`;\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyTupleIsNotSupportedError extends Data.TaggedError(\n \"EmptyTupleIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Tuple must have at least one element\";\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyUnionIsNotSupportedError extends Data.TaggedError(\n \"EmptyUnionIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Union must have at least one member that compiles to a validator\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedSchemaTypeError extends Data.TaggedError(\n \"UnsupportedSchemaTypeError\",\n)<{\n readonly schemaType: SchemaAST.AST[\"_tag\"];\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported schema type '${this.schemaType}'`;\n }\n /* v8 ignore stop */\n}\n\nexport class IndexSignaturesAreNotSupportedError extends Data.TaggedError(\n \"IndexSignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Index signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class MixedIndexAndPropertySignaturesAreNotSupportedError extends Data.TaggedError(\n \"MixedIndexAndPropertySignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Mixed index and property signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class OptionalTupleElementsAreNotSupportedError extends Data.TaggedError(\n \"OptionalTupleElementsAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Optional tuple elements are not supported\";\n }\n /* v8 ignore stop */\n}\n"],"mappings":"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"}
package/dist/Spec.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as Record from "effect/Record";
2
- import * as GroupSpec from "./GroupSpec";
2
+ import * as GroupSpec from "./GroupSpec.js";
3
3
  export declare const TypeId = "~@confect/core/Spec";
4
4
  export type TypeId = typeof TypeId;
5
5
  export declare const isSpec: (u: unknown) => u is AnyWithProps;
@@ -1 +1 @@
1
- {"version":3,"file":"Spec.d.ts","sourceRoot":"","sources":["../src/Spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,MAAM,MAAO,OAAO,KAAG,CAAC,IAAI,YACP,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CACnB,OAAO,SAAS,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;IAE1E,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,GAAG;IACvC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS,YAAY,IAC3C,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,QACzC,KAAK,KACV,KAAK,CAAC,MAAM,CAAiB,CAAC;AAEjC,eAAO,MAAM,UAAU,WACb,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,KAC5D,YAID,CAAC"}
1
+ {"version":3,"file":"Spec.d.ts","sourceRoot":"","sources":["../src/Spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,MAAM,MAAO,OAAO,KAAG,CAAC,IAAI,YACP,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CACnB,OAAO,SAAS,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;IAE1E,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,GAAG;IACvC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS,YAAY,IAC3C,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,QACzC,KAAK,KACV,KAAK,CAAC,MAAM,CAAiB,CAAC;AAEjC,eAAO,MAAM,UAAU,WACb,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,KAC5D,YAID,CAAC"}
package/dist/Spec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Spec.js","names":["GroupSpec.withName"],"sources":["../src/Spec.ts"],"sourcesContent":["import * as Predicate from \"effect/Predicate\";\nimport * as Record from \"effect/Record\";\nimport * as GroupSpec from \"./GroupSpec\";\n\nexport const TypeId = \"~@confect/core/Spec\";\nexport type TypeId = typeof TypeId;\n\nexport const isSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\n/**\n * A Confect spec: a flat container of function groups. Groups may be of any\n * runtime—a group built with `GroupSpec.makeNode()` (a Node action group) sits\n * alongside `GroupSpec.make()` groups in the same namespace. The runtime of a\n * group lives on the group itself (`GroupSpec.runtime`) and on each function's\n * `RuntimeAndFunctionType`; the spec does not carry a runtime of its own.\n */\nexport interface Spec<\n Groups_ extends Record.ReadonlyRecord<string, GroupSpec.AnyWithProps> = {},\n> {\n readonly [TypeId]: Readonly<Groups_>;\n}\n\nexport interface Any {\n readonly [TypeId]: unknown;\n}\n\nexport interface AnyWithProps extends Any {\n readonly [TypeId]: Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>;\n}\n\nexport type Groups<Spec_ extends AnyWithProps> =\n Spec_[TypeId][keyof Spec_[TypeId]];\n\n/**\n * The group record stored by a spec, with its precise member types.\n */\nexport const groups = <Spec_ extends AnyWithProps>(\n self: Spec_,\n): Spec_[TypeId] => self[TypeId];\n\nexport const fromGroups = (\n record: Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>,\n): AnyWithProps => ({\n [TypeId]: Record.map(record, (group, name) =>\n GroupSpec.withName(name, group),\n ),\n});\n"],"mappings":";;;;;;;;;;;AAIA,MAAa,SAAS;AAGtB,MAAa,UAAU,MACrB,UAAU,YAAY,GAAG,MAAM;;;;AA6BjC,MAAa,UACX,SACkB,KAAK;AAEzB,MAAa,cACX,YACkB,GACjB,SAAS,OAAO,IAAI,SAAS,OAAO,SACnCA,SAAmB,MAAM,KAAK,CAChC,EACF"}
1
+ {"version":3,"file":"Spec.js","names":["GroupSpec.withName"],"sources":["../src/Spec.ts"],"sourcesContent":["import * as Predicate from \"effect/Predicate\";\nimport * as Record from \"effect/Record\";\nimport * as GroupSpec from \"./GroupSpec.js\";\n\nexport const TypeId = \"~@confect/core/Spec\";\nexport type TypeId = typeof TypeId;\n\nexport const isSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\n/**\n * A Confect spec: a flat container of function groups. Groups may be of any\n * runtime—a group built with `GroupSpec.makeNode()` (a Node action group) sits\n * alongside `GroupSpec.make()` groups in the same namespace. The runtime of a\n * group lives on the group itself (`GroupSpec.runtime`) and on each function's\n * `RuntimeAndFunctionType`; the spec does not carry a runtime of its own.\n */\nexport interface Spec<\n Groups_ extends Record.ReadonlyRecord<string, GroupSpec.AnyWithProps> = {},\n> {\n readonly [TypeId]: Readonly<Groups_>;\n}\n\nexport interface Any {\n readonly [TypeId]: unknown;\n}\n\nexport interface AnyWithProps extends Any {\n readonly [TypeId]: Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>;\n}\n\nexport type Groups<Spec_ extends AnyWithProps> =\n Spec_[TypeId][keyof Spec_[TypeId]];\n\n/**\n * The group record stored by a spec, with its precise member types.\n */\nexport const groups = <Spec_ extends AnyWithProps>(\n self: Spec_,\n): Spec_[TypeId] => self[TypeId];\n\nexport const fromGroups = (\n record: Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>,\n): AnyWithProps => ({\n [TypeId]: Record.map(record, (group, name) =>\n GroupSpec.withName(name, group),\n ),\n});\n"],"mappings":";;;;;;;;;;;AAIA,MAAa,SAAS;AAGtB,MAAa,UAAU,MACrB,UAAU,YAAY,GAAG,MAAM;;;;AA6BjC,MAAa,UACX,SACkB,KAAK;AAEzB,MAAa,cACX,YACkB,GACjB,SAAS,OAAO,IAAI,SAAS,OAAO,SACnCA,SAAmB,MAAM,KAAK,CAChC,EACF"}
@@ -1,8 +1,8 @@
1
- import type * as IdScope from "./IdScope";
1
+ import type * as IdScope from "./IdScope.js";
2
2
  import type { SystemFields as NonIdSystemFields } from "convex/server";
3
3
  import * as Schema from "effect/Schema";
4
4
  import * as Struct from "effect/Struct";
5
- import * as GenericId from "./GenericId";
5
+ import * as GenericId from "./GenericId.js";
6
6
  /**
7
7
  * Produces a schema for Convex system fields. In Confect, system fields include
8
8
  * `_id`.
@@ -1 +1 @@
1
- {"version":3,"file":"SystemFields.d.ts","sourceRoot":"","sources":["../src/SystemFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS,MAAM,EACxB,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aAEtC,SAAS,UACZ,KAAK;;;EAKX,CAAC;AAEL;;;GAGG;AACH,KAAK,eAAe,CAClB,SAAS,SAAS,MAAM,EACxB,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AA0HhE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,SAAS,MAAM,EACxB,WAAW,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1C,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aAEtC,SAAS,UACZ,WAAW,UACX,KAAK,KACZ,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CA0CtD,CAAC;AAEF;;;;GAIG;AACH,KAAK,iBAAiB,CACpB,SAAS,SAAS,MAAM,EACxB,OAAO,EACP,KAAK,SAAS,OAAO,CAAC,OAAO,IAE7B,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GACpE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACzD,CACF,GACD,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,MAAM,OAAO,CAAC,GACrD,MAAM,CAAC,KAAK,CACV,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EACxC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAC5C,GACD,KAAK,CAAC;AAEd;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,MAAM,EACxB,WAAW,SAAS,MAAM,CAAC,GAAG,EAC9B,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IAE3C,WAAW,SAAS,MAAM,CAAC,KAAK,CAC9B,MAAM,OAAO,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAChD,GACG,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,QAAQ,CACb,QAAQ,CAAC;KACN,WAAW,IAAI,MAAM,OAAO,GAAG,sBAAsB,CACpD,SAAS,EACT,OAAO,CAAC,WAAW,CAAC,EACpB,KAAK,CACN;CACF,CAAC,CACH,CACF,GACD,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,MAAM,EACxB,QAAQ,EACR,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,QAAQ,SAAS,OAAO,GACxB;IAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG,iBAAiB,GAChE,QAAQ,GACV,KAAK,CAAC"}
1
+ {"version":3,"file":"SystemFields.d.ts","sourceRoot":"","sources":["../src/SystemFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS,MAAM,EACxB,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aAEtC,SAAS,UACZ,KAAK;;;EAKX,CAAC;AAEL;;;GAGG;AACH,KAAK,eAAe,CAClB,SAAS,SAAS,MAAM,EACxB,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AA0HhE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,SAAS,MAAM,EACxB,WAAW,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1C,KAAK,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aAEtC,SAAS,UACZ,WAAW,UACX,KAAK,KACZ,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CA0CtD,CAAC;AAEF;;;;GAIG;AACH,KAAK,iBAAiB,CACpB,SAAS,SAAS,MAAM,EACxB,OAAO,EACP,KAAK,SAAS,OAAO,CAAC,OAAO,IAE7B,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GACpE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACzD,CACF,GACD,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,MAAM,OAAO,CAAC,GACrD,MAAM,CAAC,KAAK,CACV,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EACxC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAC5C,GACD,KAAK,CAAC;AAEd;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,MAAM,EACxB,WAAW,SAAS,MAAM,CAAC,GAAG,EAC9B,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IAE3C,WAAW,SAAS,MAAM,CAAC,KAAK,CAC9B,MAAM,OAAO,SAAS,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAChD,GACG,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,QAAQ,CACb,QAAQ,CAAC;KACN,WAAW,IAAI,MAAM,OAAO,GAAG,sBAAsB,CACpD,SAAS,EACT,OAAO,CAAC,WAAW,CAAC,EACpB,KAAK,CACN;CACF,CAAC,CACH,CACF,GACD,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,MAAM,EACxB,QAAQ,EACR,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,QAAQ,SAAS,OAAO,GACxB;IAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG,iBAAiB,GAChE,QAAQ,GACV,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SystemFields.js","names":["GenericId.GenericId"],"sources":["../src/SystemFields.ts"],"sourcesContent":["import type * as IdScope from \"./IdScope\";\nimport type { SystemFields as NonIdSystemFields } from \"convex/server\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Record from \"effect/Record\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as SchemaGetter from \"effect/SchemaGetter\";\nimport * as SchemaTransformation from \"effect/SchemaTransformation\";\nimport * as Struct from \"effect/Struct\";\nimport * as GenericId from \"./GenericId\";\n\n/**\n * Produces a schema for Convex system fields. In Confect, system fields include\n * `_id`.\n */\nexport const SystemFields = <\n TableName extends string,\n const Scope extends IdScope.IdScope = IdScope.App,\n>(\n tableName: TableName,\n scope?: Scope,\n) =>\n Schema.Struct({\n _id: GenericId.GenericId(tableName, scope),\n _creationTime: Schema.Finite,\n });\n\n/**\n * The field map added to a table schema, derived from {@link SystemFields} so it\n * stays in lockstep with the runtime schema.\n */\ntype SystemFieldsFor<\n TableName extends string,\n Scope extends IdScope.IdScope = IdScope.App,\n> = ReturnType<typeof SystemFields<TableName, Scope>>[\"fields\"];\n\n/**\n * The system field names, derived from {@link SystemFields} so they stay in\n * lockstep with the schema.\n */\nconst systemFieldNames: ReadonlyArray<string> = Record.keys(\n SystemFields(\"\").fields,\n);\n\nconst isSystemFieldKey = (key: string | symbol): key is string =>\n Predicate.isString(key) && Array.contains(systemFieldNames, key);\n\nconst splitSystemFields = (input: { [key: PropertyKey]: unknown }) => {\n const keys = Reflect.ownKeys(input);\n const pick = (pickedKeys: ReadonlyArray<string | symbol>) =>\n Record.fromEntries(\n Array.map(pickedKeys, (key) => [key, input[key]] as const),\n );\n return {\n system: pick(Array.filter(keys, isSystemFieldKey)),\n rest: pick(Array.filter(keys, Predicate.not(isSystemFieldKey))),\n };\n};\n\n/**\n * Wraps a transformation getter so the system fields bypass it: they are split\n * off the input before the user-defined getter runs and merged back into its\n * output. Transformations construct fresh objects, so without this the system\n * fields would be dropped at every transformation step.\n */\nconst wrapGetter = <R>(\n getter: SchemaGetter.Getter<any, any, R>,\n): SchemaGetter.Getter<any, any, R> =>\n SchemaGetter.transformOptionalEffect((input, options) => {\n if (Option.isNone(input) || !Predicate.isObject(input.value)) {\n return SchemaGetter.run(getter, input, options);\n }\n const { system, rest } = splitSystemFields(input.value);\n return SchemaGetter.run(getter, Option.some(rest), options).pipe(\n Effect.map(\n Option.map((output) =>\n Predicate.isObject(output) ? Struct.assign(output, system) : output,\n ),\n ),\n );\n });\n\nconst wrapTransformation = (\n transformation: SchemaAST.Link[\"transformation\"],\n): SchemaTransformation.Transformation<any, any, any, any> => {\n if (!SchemaTransformation.isTransformation(transformation)) {\n throw new Error(\n \"Cannot extend a table schema that uses decoding/encoding middleware with system fields\",\n );\n }\n return new SchemaTransformation.Transformation(\n wrapGetter(transformation.decode),\n wrapGetter(transformation.encode),\n );\n};\n\n/**\n * Builds an AST walker that adds the given system-field property signatures to\n * every object node of a schema's AST—including each step of its encoding\n * chain—wrapping transformations so the fields survive them.\n */\nconst makeExtendAst = (\n systemPropertySignatures: ReadonlyArray<SchemaAST.PropertySignature>,\n) => {\n const extendEncoding = (encoding: SchemaAST.Encoding): SchemaAST.Encoding =>\n Array.map(\n encoding,\n (link) =>\n new SchemaAST.Link(\n extendAst(link.to),\n wrapTransformation(link.transformation),\n ),\n );\n\n const extendAst = (ast: SchemaAST.AST): SchemaAST.AST => {\n if (SchemaAST.isUnion(ast)) {\n return new SchemaAST.Union(\n Array.map(ast.types, extendAst),\n ast.options,\n ast.annotations,\n ast.checks,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n ast.encodingChecks,\n );\n }\n if (SchemaAST.isSuspend(ast)) {\n return new SchemaAST.Suspend(\n () => extendAst(ast.thunk()),\n ast.annotations,\n undefined,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n );\n }\n if (SchemaAST.isObjects(ast)) {\n return new SchemaAST.Objects(\n Array.appendAll(ast.propertySignatures, systemPropertySignatures),\n ast.indexSignatures,\n ast.annotations,\n ast.checks,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n ast.encodingChecks,\n );\n }\n throw new Error(\n ast._tag === \"Declaration\"\n ? \"Cannot extend a `Declaration` schema (such as a `Schema.Class`) with system fields: its decoded values are constructed instances, which cannot gain extra fields. Use a plain `Schema.Struct`, or transform to one with `Schema.decodeTo`.\"\n : `Cannot extend a \\`${ast._tag}\\` schema node with system fields: a table schema must resolve to an object shape at every step of its encoding.`,\n );\n };\n\n return extendAst;\n};\n\n/**\n * Extend a table schema with Convex system fields.\n *\n * A plain `Struct` gains the fields via `mapFields` and a `Union` has them\n * distributed across its members via `mapMembers`, preserving the schema's\n * checks and `Struct`/`Union` structure. Any other object-shaped schema—one\n * built with `Schema.decodeTo`/`Schema.encodeKeys`, a branded struct, a\n * suspended schema—is extended at the AST level: every object node in its\n * encoding chain gains the system fields, and each transformation is wrapped so\n * the fields bypass the user-defined getters. Schemas that do not resolve to an\n * object shape at every step (such as `Schema.Class`, whose decoded values are\n * class instances) are rejected with a descriptive error.\n *\n * Note that struct-level checks on an extended schema observe the value with\n * the system fields attached, and encoding an extended schema emits the system\n * fields alongside the table fields.\n */\nexport const extendWithSystemFields = <\n TableName extends string,\n TableSchema extends Schema.Codec<any, any>,\n const Scope extends IdScope.IdScope = IdScope.App,\n>(\n tableName: TableName,\n schema: TableSchema,\n scope?: Scope,\n): ExtendWithSystemFields<TableName, TableSchema, Scope> => {\n const system = SystemFields(tableName, scope).fields;\n\n const extendAst = makeExtendAst(\n pipe(\n system,\n Record.toEntries,\n Array.map(\n ([name, field]) => new SchemaAST.PropertySignature(name, field.ast),\n ),\n ),\n );\n\n const extend = (s: Schema.Top): Schema.Top => {\n if (\n s.ast.encoding === undefined &&\n SchemaAST.isUnion(s.ast) &&\n Array.isArray((s as { readonly members?: unknown }).members)\n ) {\n return (s as Schema.Union<ReadonlyArray<Schema.Top>>).mapMembers(\n Array.map(extend),\n { unsafePreserveChecks: true },\n );\n }\n if (\n s.ast.encoding === undefined &&\n SchemaAST.isObjects(s.ast) &&\n typeof (s as { readonly mapFields?: unknown }).mapFields === \"function\"\n ) {\n return (s as Schema.Struct<Schema.Struct.Fields>).mapFields(\n Struct.assign(system),\n { unsafePreserveChecks: true },\n );\n }\n return Schema.make(extendAst(s.ast));\n };\n\n return extend(schema) as unknown as ExtendWithSystemFields<\n TableName,\n TableSchema,\n Scope\n >;\n};\n\n/**\n * Applies the system fields to a single struct, mirroring\n * `Schema.fieldsAssign`. Any other (already-extended or opaque) schema falls\n * back to a `Codec` carrying the system-field document shape.\n */\ntype ApplySystemFields<\n TableName extends string,\n Schema_,\n Scope extends IdScope.IdScope,\n> =\n Schema_ extends Schema.Struct<infer Fields extends Schema.Struct.Fields>\n ? Schema.Struct<\n Struct.Simplify<\n Struct.Assign<Fields, SystemFieldsFor<TableName, Scope>>\n >\n >\n : Schema_ extends Schema.Codec<infer Type, infer Encoded>\n ? Schema.Codec<\n WithSystemFields<TableName, Type, Scope>,\n WithSystemFields<TableName, Encoded, Scope>\n >\n : never;\n\n/**\n * Extend a table schema with Convex system fields at the type level.\n *\n * This mirrors the runtime {@link extendWithSystemFields}: a `Struct` gains the\n * system fields directly (matching `Schema.fieldsAssign`), and a `Union` has\n * them distributed across its members (matching\n * `union.mapMembers(Tuple.map(Schema.fieldsAssign(...)))`). The\n * `Struct`/`Union` structure is preserved rather than collapsed to a bare\n * `Codec`; any other schema falls back to a `Codec` carrying the system-field\n * document shape, matching the runtime's AST-level extension.\n */\nexport type ExtendWithSystemFields<\n TableName extends string,\n TableSchema extends Schema.Top,\n Scope extends IdScope.IdScope = IdScope.App,\n> =\n TableSchema extends Schema.Union<\n infer Members extends ReadonlyArray<Schema.Top>\n >\n ? Schema.Union<\n Struct.Simplify<\n Readonly<{\n [MemberIndex in keyof Members]: ExtendWithSystemFields<\n TableName,\n Members[MemberIndex],\n Scope\n >;\n }>\n >\n >\n : ApplySystemFields<TableName, TableSchema, Scope>;\n\n/**\n * The decoded/encoded document shape: a table's fields plus Convex's system\n * fields. Deliberately a bare intersection (no `Expand`/`Simplify`)—flattening\n * it with a homomorphic mapped type collapses to `{ [x: string]: any }` when\n * `Document` is still an unresolved generic, which breaks structural\n * comparability in the database reader/writer plumbing.\n */\nexport type WithSystemFields<\n TableName extends string,\n Document,\n Scope extends IdScope.IdScope = IdScope.App,\n> = Document extends unknown\n ? { _id: GenericId.GenericId<TableName, Scope> } & NonIdSystemFields &\n Document\n : never;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SystemFields.js","names":["GenericId.GenericId"],"sources":["../src/SystemFields.ts"],"sourcesContent":["import type * as IdScope from \"./IdScope.js\";\nimport type { SystemFields as NonIdSystemFields } from \"convex/server\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Record from \"effect/Record\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as SchemaGetter from \"effect/SchemaGetter\";\nimport * as SchemaTransformation from \"effect/SchemaTransformation\";\nimport * as Struct from \"effect/Struct\";\nimport * as GenericId from \"./GenericId.js\";\n\n/**\n * Produces a schema for Convex system fields. In Confect, system fields include\n * `_id`.\n */\nexport const SystemFields = <\n TableName extends string,\n const Scope extends IdScope.IdScope = IdScope.App,\n>(\n tableName: TableName,\n scope?: Scope,\n) =>\n Schema.Struct({\n _id: GenericId.GenericId(tableName, scope),\n _creationTime: Schema.Finite,\n });\n\n/**\n * The field map added to a table schema, derived from {@link SystemFields} so it\n * stays in lockstep with the runtime schema.\n */\ntype SystemFieldsFor<\n TableName extends string,\n Scope extends IdScope.IdScope = IdScope.App,\n> = ReturnType<typeof SystemFields<TableName, Scope>>[\"fields\"];\n\n/**\n * The system field names, derived from {@link SystemFields} so they stay in\n * lockstep with the schema.\n */\nconst systemFieldNames: ReadonlyArray<string> = Record.keys(\n SystemFields(\"\").fields,\n);\n\nconst isSystemFieldKey = (key: string | symbol): key is string =>\n Predicate.isString(key) && Array.contains(systemFieldNames, key);\n\nconst splitSystemFields = (input: { [key: PropertyKey]: unknown }) => {\n const keys = Reflect.ownKeys(input);\n const pick = (pickedKeys: ReadonlyArray<string | symbol>) =>\n Record.fromEntries(\n Array.map(pickedKeys, (key) => [key, input[key]] as const),\n );\n return {\n system: pick(Array.filter(keys, isSystemFieldKey)),\n rest: pick(Array.filter(keys, Predicate.not(isSystemFieldKey))),\n };\n};\n\n/**\n * Wraps a transformation getter so the system fields bypass it: they are split\n * off the input before the user-defined getter runs and merged back into its\n * output. Transformations construct fresh objects, so without this the system\n * fields would be dropped at every transformation step.\n */\nconst wrapGetter = <R>(\n getter: SchemaGetter.Getter<any, any, R>,\n): SchemaGetter.Getter<any, any, R> =>\n SchemaGetter.transformOptionalEffect((input, options) => {\n if (Option.isNone(input) || !Predicate.isObject(input.value)) {\n return SchemaGetter.run(getter, input, options);\n }\n const { system, rest } = splitSystemFields(input.value);\n return SchemaGetter.run(getter, Option.some(rest), options).pipe(\n Effect.map(\n Option.map((output) =>\n Predicate.isObject(output) ? Struct.assign(output, system) : output,\n ),\n ),\n );\n });\n\nconst wrapTransformation = (\n transformation: SchemaAST.Link[\"transformation\"],\n): SchemaTransformation.Transformation<any, any, any, any> => {\n if (!SchemaTransformation.isTransformation(transformation)) {\n throw new Error(\n \"Cannot extend a table schema that uses decoding/encoding middleware with system fields\",\n );\n }\n return new SchemaTransformation.Transformation(\n wrapGetter(transformation.decode),\n wrapGetter(transformation.encode),\n );\n};\n\n/**\n * Builds an AST walker that adds the given system-field property signatures to\n * every object node of a schema's AST—including each step of its encoding\n * chain—wrapping transformations so the fields survive them.\n */\nconst makeExtendAst = (\n systemPropertySignatures: ReadonlyArray<SchemaAST.PropertySignature>,\n) => {\n const extendEncoding = (encoding: SchemaAST.Encoding): SchemaAST.Encoding =>\n Array.map(\n encoding,\n (link) =>\n new SchemaAST.Link(\n extendAst(link.to),\n wrapTransformation(link.transformation),\n ),\n );\n\n const extendAst = (ast: SchemaAST.AST): SchemaAST.AST => {\n if (SchemaAST.isUnion(ast)) {\n return new SchemaAST.Union(\n Array.map(ast.types, extendAst),\n ast.options,\n ast.annotations,\n ast.checks,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n ast.encodingChecks,\n );\n }\n if (SchemaAST.isSuspend(ast)) {\n return new SchemaAST.Suspend(\n () => extendAst(ast.thunk()),\n ast.annotations,\n undefined,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n );\n }\n if (SchemaAST.isObjects(ast)) {\n return new SchemaAST.Objects(\n Array.appendAll(ast.propertySignatures, systemPropertySignatures),\n ast.indexSignatures,\n ast.annotations,\n ast.checks,\n ast.encoding === undefined ? undefined : extendEncoding(ast.encoding),\n ast.context,\n ast.encodingChecks,\n );\n }\n throw new Error(\n ast._tag === \"Declaration\"\n ? \"Cannot extend a `Declaration` schema (such as a `Schema.Class`) with system fields: its decoded values are constructed instances, which cannot gain extra fields. Use a plain `Schema.Struct`, or transform to one with `Schema.decodeTo`.\"\n : `Cannot extend a \\`${ast._tag}\\` schema node with system fields: a table schema must resolve to an object shape at every step of its encoding.`,\n );\n };\n\n return extendAst;\n};\n\n/**\n * Extend a table schema with Convex system fields.\n *\n * A plain `Struct` gains the fields via `mapFields` and a `Union` has them\n * distributed across its members via `mapMembers`, preserving the schema's\n * checks and `Struct`/`Union` structure. Any other object-shaped schema—one\n * built with `Schema.decodeTo`/`Schema.encodeKeys`, a branded struct, a\n * suspended schema—is extended at the AST level: every object node in its\n * encoding chain gains the system fields, and each transformation is wrapped so\n * the fields bypass the user-defined getters. Schemas that do not resolve to an\n * object shape at every step (such as `Schema.Class`, whose decoded values are\n * class instances) are rejected with a descriptive error.\n *\n * Note that struct-level checks on an extended schema observe the value with\n * the system fields attached, and encoding an extended schema emits the system\n * fields alongside the table fields.\n */\nexport const extendWithSystemFields = <\n TableName extends string,\n TableSchema extends Schema.Codec<any, any>,\n const Scope extends IdScope.IdScope = IdScope.App,\n>(\n tableName: TableName,\n schema: TableSchema,\n scope?: Scope,\n): ExtendWithSystemFields<TableName, TableSchema, Scope> => {\n const system = SystemFields(tableName, scope).fields;\n\n const extendAst = makeExtendAst(\n pipe(\n system,\n Record.toEntries,\n Array.map(\n ([name, field]) => new SchemaAST.PropertySignature(name, field.ast),\n ),\n ),\n );\n\n const extend = (s: Schema.Top): Schema.Top => {\n if (\n s.ast.encoding === undefined &&\n SchemaAST.isUnion(s.ast) &&\n Array.isArray((s as { readonly members?: unknown }).members)\n ) {\n return (s as Schema.Union<ReadonlyArray<Schema.Top>>).mapMembers(\n Array.map(extend),\n { unsafePreserveChecks: true },\n );\n }\n if (\n s.ast.encoding === undefined &&\n SchemaAST.isObjects(s.ast) &&\n typeof (s as { readonly mapFields?: unknown }).mapFields === \"function\"\n ) {\n return (s as Schema.Struct<Schema.Struct.Fields>).mapFields(\n Struct.assign(system),\n { unsafePreserveChecks: true },\n );\n }\n return Schema.make(extendAst(s.ast));\n };\n\n return extend(schema) as unknown as ExtendWithSystemFields<\n TableName,\n TableSchema,\n Scope\n >;\n};\n\n/**\n * Applies the system fields to a single struct, mirroring\n * `Schema.fieldsAssign`. Any other (already-extended or opaque) schema falls\n * back to a `Codec` carrying the system-field document shape.\n */\ntype ApplySystemFields<\n TableName extends string,\n Schema_,\n Scope extends IdScope.IdScope,\n> =\n Schema_ extends Schema.Struct<infer Fields extends Schema.Struct.Fields>\n ? Schema.Struct<\n Struct.Simplify<\n Struct.Assign<Fields, SystemFieldsFor<TableName, Scope>>\n >\n >\n : Schema_ extends Schema.Codec<infer Type, infer Encoded>\n ? Schema.Codec<\n WithSystemFields<TableName, Type, Scope>,\n WithSystemFields<TableName, Encoded, Scope>\n >\n : never;\n\n/**\n * Extend a table schema with Convex system fields at the type level.\n *\n * This mirrors the runtime {@link extendWithSystemFields}: a `Struct` gains the\n * system fields directly (matching `Schema.fieldsAssign`), and a `Union` has\n * them distributed across its members (matching\n * `union.mapMembers(Tuple.map(Schema.fieldsAssign(...)))`). The\n * `Struct`/`Union` structure is preserved rather than collapsed to a bare\n * `Codec`; any other schema falls back to a `Codec` carrying the system-field\n * document shape, matching the runtime's AST-level extension.\n */\nexport type ExtendWithSystemFields<\n TableName extends string,\n TableSchema extends Schema.Top,\n Scope extends IdScope.IdScope = IdScope.App,\n> =\n TableSchema extends Schema.Union<\n infer Members extends ReadonlyArray<Schema.Top>\n >\n ? Schema.Union<\n Struct.Simplify<\n Readonly<{\n [MemberIndex in keyof Members]: ExtendWithSystemFields<\n TableName,\n Members[MemberIndex],\n Scope\n >;\n }>\n >\n >\n : ApplySystemFields<TableName, TableSchema, Scope>;\n\n/**\n * The decoded/encoded document shape: a table's fields plus Convex's system\n * fields. Deliberately a bare intersection (no `Expand`/`Simplify`)—flattening\n * it with a homomorphic mapped type collapses to `{ [x: string]: any }` when\n * `Document` is still an unresolved generic, which breaks structural\n * comparability in the database reader/writer plumbing.\n */\nexport type WithSystemFields<\n TableName extends string,\n Document,\n Scope extends IdScope.IdScope = IdScope.App,\n> = Document extends unknown\n ? { _id: GenericId.GenericId<TableName, Scope> } & NonIdSystemFields &\n Document\n : never;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAa,gBAIX,WACA,UAEA,OAAO,OAAO;CACZ,KAAKA,UAAoB,WAAW,KAAK;CACzC,eAAe,OAAO;AACxB,CAAC;;;;;AAeH,MAAM,mBAA0C,OAAO,KACrD,aAAa,EAAE,CAAC,CAAC,MACnB;AAEA,MAAM,oBAAoB,QACxB,UAAU,SAAS,GAAG,KAAK,MAAM,SAAS,kBAAkB,GAAG;AAEjE,MAAM,qBAAqB,UAA2C;CACpE,MAAM,OAAO,QAAQ,QAAQ,KAAK;CAClC,MAAM,QAAQ,eACZ,OAAO,YACL,MAAM,IAAI,aAAa,QAAQ,CAAC,KAAK,MAAM,IAAI,CAAU,CAC3D;CACF,OAAO;EACL,QAAQ,KAAK,MAAM,OAAO,MAAM,gBAAgB,CAAC;EACjD,MAAM,KAAK,MAAM,OAAO,MAAM,UAAU,IAAI,gBAAgB,CAAC,CAAC;CAChE;AACF;;;;;;;AAQA,MAAM,cACJ,WAEA,aAAa,yBAAyB,OAAO,YAAY;CACvD,IAAI,OAAO,OAAO,KAAK,KAAK,CAAC,UAAU,SAAS,MAAM,KAAK,GACzD,OAAO,aAAa,IAAI,QAAQ,OAAO,OAAO;CAEhD,MAAM,EAAE,QAAQ,SAAS,kBAAkB,MAAM,KAAK;CACtD,OAAO,aAAa,IAAI,QAAQ,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC,KAC1D,OAAO,IACL,OAAO,KAAK,WACV,UAAU,SAAS,MAAM,IAAI,OAAO,OAAO,QAAQ,MAAM,IAAI,MAC/D,CACF,CACF;AACF,CAAC;AAEH,MAAM,sBACJ,mBAC4D;CAC5D,IAAI,CAAC,qBAAqB,iBAAiB,cAAc,GACvD,MAAM,IAAI,MACR,wFACF;CAEF,OAAO,IAAI,qBAAqB,eAC9B,WAAW,eAAe,MAAM,GAChC,WAAW,eAAe,MAAM,CAClC;AACF;;;;;;AAOA,MAAM,iBACJ,6BACG;CACH,MAAM,kBAAkB,aACtB,MAAM,IACJ,WACC,SACC,IAAI,UAAU,KACZ,UAAU,KAAK,EAAE,GACjB,mBAAmB,KAAK,cAAc,CACxC,CACJ;CAEF,MAAM,aAAa,QAAsC;EACvD,IAAI,UAAU,QAAQ,GAAG,GACvB,OAAO,IAAI,UAAU,MACnB,MAAM,IAAI,IAAI,OAAO,SAAS,GAC9B,IAAI,SACJ,IAAI,aACJ,IAAI,QACJ,IAAI,aAAa,KAAA,IAAY,KAAA,IAAY,eAAe,IAAI,QAAQ,GACpE,IAAI,SACJ,IAAI,cACN;EAEF,IAAI,UAAU,UAAU,GAAG,GACzB,OAAO,IAAI,UAAU,cACb,UAAU,IAAI,MAAM,CAAC,GAC3B,IAAI,aACJ,KAAA,GACA,IAAI,aAAa,KAAA,IAAY,KAAA,IAAY,eAAe,IAAI,QAAQ,GACpE,IAAI,OACN;EAEF,IAAI,UAAU,UAAU,GAAG,GACzB,OAAO,IAAI,UAAU,QACnB,MAAM,UAAU,IAAI,oBAAoB,wBAAwB,GAChE,IAAI,iBACJ,IAAI,aACJ,IAAI,QACJ,IAAI,aAAa,KAAA,IAAY,KAAA,IAAY,eAAe,IAAI,QAAQ,GACpE,IAAI,SACJ,IAAI,cACN;EAEF,MAAM,IAAI,MACR,IAAI,SAAS,gBACT,+OACA,qBAAqB,IAAI,KAAK,iHACpC;CACF;CAEA,OAAO;AACT;;;;;;;;;;;;;;;;;;AAmBA,MAAa,0BAKX,WACA,QACA,UAC0D;CAC1D,MAAM,SAAS,aAAa,WAAW,KAAK,CAAC,CAAC;CAE9C,MAAM,YAAY,cAChB,KACE,QACA,OAAO,WACP,MAAM,KACH,CAAC,MAAM,WAAW,IAAI,UAAU,kBAAkB,MAAM,MAAM,GAAG,CACpE,CACF,CACF;CAEA,MAAM,UAAU,MAA8B;EAC5C,IACE,EAAE,IAAI,aAAa,KAAA,KACnB,UAAU,QAAQ,EAAE,GAAG,KACvB,MAAM,QAAS,EAAqC,OAAO,GAE3D,OAAQ,EAA8C,WACpD,MAAM,IAAI,MAAM,GAChB,EAAE,sBAAsB,KAAK,CAC/B;EAEF,IACE,EAAE,IAAI,aAAa,KAAA,KACnB,UAAU,UAAU,EAAE,GAAG,KACzB,OAAQ,EAAuC,cAAc,YAE7D,OAAQ,EAA0C,UAChD,OAAO,OAAO,MAAM,GACpB,EAAE,sBAAsB,KAAK,CAC/B;EAEF,OAAO,OAAO,KAAK,UAAU,EAAE,GAAG,CAAC;CACrC;CAEA,OAAO,OAAO,MAAM;AAKtB"}
package/dist/Table.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import * as IdScope from "./IdScope";
2
- import * as SystemFields from "./SystemFields";
3
- import type { TableSchemaToTableValidator } from "./SchemaToValidator";
1
+ import * as IdScope from "./IdScope.js";
2
+ import * as SystemFields from "./SystemFields.js";
3
+ import type { TableSchemaToTableValidator } from "./SchemaToValidator.js";
4
4
  import type { SystemFields as ConvexSystemFields, Expand, GenericTableIndexes, GenericTableSearchIndexes, GenericTableVectorIndexes, IndexTiebreakerField, SearchIndexConfig, VectorIndexConfig } from "convex/server";
5
5
  import type { GenericValidator, Validator } from "convex/values";
6
6
  import type * as Schema from "effect/Schema";
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"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"}
package/dist/Table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["SystemFields.extendWithSystemFields","IdScope.app"],"sources":["../src/Table.ts"],"sourcesContent":["import * as IdScope from \"./IdScope\";\nimport * as Lazy from \"./Lazy\";\nimport * as SystemFields from \"./SystemFields\";\nimport type { TableSchemaToTableValidator } from \"./SchemaToValidator\";\nimport type {\n SystemFields as ConvexSystemFields,\n Expand,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes,\n IndexTiebreakerField,\n SearchIndexConfig,\n VectorIndexConfig,\n} from \"convex/server\";\nimport type { GenericValidator, Validator } from \"convex/values\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\n\nexport const TypeId = \"~@confect/core/Table\";\nexport type TypeId = typeof TypeId;\n\n// -----------------------------------------------------------------------------\n// Predicates\n// -----------------------------------------------------------------------------\n//\n// Both bound `Table`s and `UnnamedTable` callables share the same `[TypeId]`\n// brand. They disambiguate by whether a `tableName` property is set: bound\n// tables have one, unnamed callables do not.\n//\n// The discriminator is `tableName` (not `name`) so it does not collide with\n// the built-in `Function.prototype.name` that every JS function carries.\n\nexport const isTable = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId) && Predicate.hasProperty(u, \"tableName\");\n\nexport const isUnnamedTable = (u: unknown): u is UnnamedAny =>\n Predicate.hasProperty(u, TypeId) && !Predicate.hasProperty(u, \"tableName\");\n\n// -----------------------------------------------------------------------------\n// Bound Table\n// -----------------------------------------------------------------------------\n//\n// A bound `Table` is the client-safe document schema: `Fields`, `Doc`, and\n// the index metadata records. The Convex deploy `tableDefinition` (which\n// value-imports `convex/server`) is produced separately by\n// `@confect/server/Table.tableDefinition`.\n\nexport interface Table<\n Name_ extends string,\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends GenericValidator =\n TableSchemaToTableValidator<TableSchema_>,\n Indexes_ extends GenericTableIndexes = {},\n SearchIndexes_ extends GenericTableSearchIndexes = {},\n VectorIndexes_ extends GenericTableVectorIndexes = {},\n Scope_ extends IdScope.IdScope = IdScope.App,\n> {\n readonly [TypeId]: TypeId;\n readonly tableName: Name_;\n readonly scope: Scope_;\n readonly Fields: TableSchema_;\n readonly Doc: SystemFields.ExtendWithSystemFields<\n Name_,\n TableSchema_,\n Scope_\n >;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n readonly \"~TableValidator\": TableValidator_;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n readonly tableName: string;\n}\n\nexport type AnyWithProps = Table<\n any,\n Schema.Codec<any, any>,\n GenericValidator,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes,\n IdScope.IdScope\n>;\n\n// -----------------------------------------------------------------------------\n// UnnamedTable (callable)\n// -----------------------------------------------------------------------------\n//\n// `Table.make(lazyFields)` returns an `UnnamedTable`: a callable that\n// produces a fully bound `Table` when invoked with a name. Chaining methods\n// (`.index`, `.searchIndex`, `.vectorIndex`) live here and return new\n// `UnnamedTable`s, accumulating plain index metadata records. The\n// user-supplied `lazyFields` callback is just carried through until first\n// access of `Fields`/`Doc` on a bound table. The codegen pipeline emits a\n// wrapper file per user-authored table that simply invokes the unnamed\n// callable with the filename basename.\n\nexport interface UnnamedTable<\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends GenericValidator =\n TableSchemaToTableValidator<TableSchema_>,\n Indexes_ extends GenericTableIndexes = {},\n SearchIndexes_ extends GenericTableSearchIndexes = {},\n VectorIndexes_ extends GenericTableVectorIndexes = {},\n> {\n <\n const Name_ extends string,\n const Scope_ extends IdScope.IdScope = IdScope.App,\n >(\n tableName: Name_,\n scope?: Scope_,\n ): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >;\n\n readonly [TypeId]: TypeId;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n readonly \"~TableValidator\": TableValidator_;\n\n index<\n IndexName extends string,\n FirstFieldPath extends ExtractFieldPaths<TableValidator_>,\n RestFieldPaths extends ExtractFieldPaths<TableValidator_>[],\n >(\n name: IndexName,\n fields: [FirstFieldPath, ...RestFieldPaths],\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Expand<\n Indexes_ &\n Record<\n IndexName,\n [FirstFieldPath, ...RestFieldPaths, IndexTiebreakerField]\n >\n >,\n SearchIndexes_,\n VectorIndexes_\n >;\n\n searchIndex<\n IndexName extends string,\n SearchField extends ExtractFieldPaths<TableValidator_>,\n FilterFields extends ExtractFieldPaths<TableValidator_> = never,\n >(\n name: IndexName,\n indexConfig: Expand<SearchIndexConfig<SearchField, FilterFields>>,\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n Expand<\n SearchIndexes_ &\n Record<\n IndexName,\n {\n searchField: SearchField;\n filterFields: FilterFields;\n }\n >\n >,\n VectorIndexes_\n >;\n\n vectorIndex<\n IndexName extends string,\n VectorField extends ExtractFieldPaths<TableValidator_>,\n FilterFields extends ExtractFieldPaths<TableValidator_> = never,\n >(\n name: IndexName,\n indexConfig: Expand<VectorIndexConfig<VectorField, FilterFields>>,\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n Expand<\n VectorIndexes_ &\n Record<\n IndexName,\n {\n vectorField: VectorField;\n dimensions: number;\n filterFields: FilterFields;\n }\n >\n >\n >;\n}\n\nexport interface UnnamedAny {\n readonly [TypeId]: TypeId;\n}\n\nexport type UnnamedAnyWithProps = UnnamedTable<\n Schema.Codec<any, any>,\n GenericValidator,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes\n>;\n\n// -----------------------------------------------------------------------------\n// Type extractors\n// -----------------------------------------------------------------------------\n\nexport type Name<TableDef extends AnyWithProps> = TableDef[\"tableName\"] &\n string;\n\nexport type TableSchema<TableDef extends AnyWithProps> = TableDef[\"Fields\"];\n\nexport type TableValidator<TableDef extends AnyWithProps> =\n TableDef[\"~TableValidator\"];\n\nexport type Indexes<TableDef extends AnyWithProps> = TableDef[\"indexes\"];\n\nexport type SearchIndexes<TableDef extends AnyWithProps> =\n TableDef[\"searchIndexes\"];\n\nexport type VectorIndexes<TableDef extends AnyWithProps> =\n TableDef[\"vectorIndexes\"];\n\nexport type Doc<TableDef extends AnyWithProps> = TableDef[\"Doc\"];\n\nexport type Fields<TableDef extends AnyWithProps> = TableDef[\"Fields\"];\nexport type Scope<TableDef extends AnyWithProps> = TableDef[\"scope\"];\n\nexport type WithName<\n TableDef extends AnyWithProps,\n Name_ extends string,\n> = TableDef extends { readonly tableName: Name_ } ? TableDef : never;\n\nexport type TablesRecord<Tables extends AnyWithProps> = {\n readonly [TableName_ in Name<Tables>]: WithName<Tables, TableName_>;\n};\n\n// -----------------------------------------------------------------------------\n// Construction\n// -----------------------------------------------------------------------------\n//\n// `make` only stores the user-supplied `lazyFields` callback alongside any\n// chained index metadata. Neither `Fields` nor `Doc` is constructed until\n// first access on a bound `Table`. Each chain step is O(1) (plain object\n// spread of the metadata records) and never invokes the callback. Binding\n// via `unnamed(tableName)` installs lazy memoised getters for `Fields` and\n// `Doc` via `Lazy.defineProperty`, so the first access materialises the\n// value and replaces the getter with a plain data property—second-and-\n// subsequent accesses are observably indistinguishable from a plain\n// property and avoid all function-call overhead.\n\ninterface UnnamedState<\n TableSchema_ extends Schema.Codec<any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n> {\n readonly lazyFields: () => TableSchema_;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n}\n\nconst makeBound = <\n Name_ extends string,\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends Validator<any, any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n Scope_ extends IdScope.IdScope,\n>(\n tableName: Name_,\n state: UnnamedState<TableSchema_, Indexes_, SearchIndexes_, VectorIndexes_>,\n scope: Scope_,\n): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n> => {\n const bound = {\n [TypeId]: TypeId as TypeId,\n tableName,\n scope,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n } as Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >;\n\n Lazy.defineProperty(bound, \"Fields\", () => state.lazyFields());\n\n Lazy.defineProperty(bound, \"Doc\", () =>\n SystemFields.extendWithSystemFields(\n tableName,\n (bound as { Fields: TableSchema_ }).Fields,\n scope,\n ),\n );\n\n return bound;\n};\n\nconst makeUnnamed = <\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends Validator<any, any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n>(\n state: UnnamedState<TableSchema_, Indexes_, SearchIndexes_, VectorIndexes_>,\n): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_\n> => {\n type UnnamedTable_ = UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_\n >;\n\n type UnnamedTableFunction<FunctionName extends keyof UnnamedTable_> =\n UnnamedTable_[FunctionName];\n\n const bind = <\n const Name_ extends string,\n const Scope_ extends IdScope.IdScope = IdScope.App,\n >(\n tableName: Name_,\n scope?: Scope_,\n ): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n > =>\n makeBound<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >(tableName, state, (scope ?? IdScope.app) as Scope_);\n\n const index: UnnamedTableFunction<\"index\"> = (name, fields) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: {\n ...state.indexes,\n [name]: fields,\n } as any,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n });\n\n const searchIndex: UnnamedTableFunction<\"searchIndex\"> = (\n name,\n indexConfig,\n ) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: state.indexes,\n searchIndexes: {\n ...state.searchIndexes,\n [name]: indexConfig,\n } as any,\n vectorIndexes: state.vectorIndexes,\n });\n\n const vectorIndex: UnnamedTableFunction<\"vectorIndex\"> = (\n name,\n indexConfig,\n ) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: {\n ...state.vectorIndexes,\n [name]: indexConfig,\n } as any,\n });\n\n return Object.assign(bind, {\n [TypeId]: TypeId as TypeId,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n index,\n searchIndex,\n vectorIndex,\n }) as UnnamedTable_;\n};\n\nexport const make = <const TableSchema_ extends Schema.Codec<any, any>>(\n lazyFields: () => TableSchema_,\n): UnnamedTable<TableSchema_, TableSchemaToTableValidator<TableSchema_>> => {\n type TableValidator_ = TableSchemaToTableValidator<TableSchema_>;\n type UnnamedTable_ = UnnamedTable<TableSchema_, TableValidator_>;\n\n return makeUnnamed<TableSchema_, TableValidator_, {}, {}, {}>({\n lazyFields,\n indexes: {},\n searchIndexes: {},\n vectorIndexes: {},\n }) as UnnamedTable_;\n};\n\n// Vendored types from convex-js, partially modified. Ideally we could use these directly. See https://github.com/get-convex/convex-js/pull/14\n\n/**\n * Extract all of the index field paths within a Convex `Validator`.\n *\n * This is used when declaring table indexes.\n *\n * @public\n */\ntype ExtractFieldPaths<TableValidator_ extends Validator<any, any, any>> =\n // Add in the system fields available in index definitions.\n // This should be everything except for `_id` because thats added to indexes\n // automatically.\n TableValidator_[\"fieldPaths\"] | keyof ConvexSystemFields;\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAa,SAAS;AActB,MAAa,WAAW,MACtB,UAAU,YAAY,GAAA,sBAAS,KAAK,UAAU,YAAY,GAAG,WAAW;AAE1E,MAAa,kBAAkB,MAC7B,UAAU,YAAY,GAAA,sBAAS,KAAK,CAAC,UAAU,YAAY,GAAG,WAAW;AA6O3E,MAAM,aASJ,WACA,OACA,UASG;CACH,MAAM,QAAQ;GACX,SAAS;EACV;EACA;EACA,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe,MAAM;CACvB;CAUA,eAAoB,OAAO,gBAAgB,MAAM,WAAW,CAAC;CAE7D,eAAoB,OAAO,aACzBA,uBACE,WACC,MAAmC,QACpC,KACF,CACF;CAEA,OAAO;AACT;AAEA,MAAM,eAOJ,UAOG;CAYH,MAAM,QAIJ,WACA,UAUA,UAQE,WAAW,OAAQ,SAASC,GAAsB;CAEtD,MAAM,SAAwC,MAAM,WAClD,YAAY;EACV,YAAY,MAAM;EAClB,SAAS;GACP,GAAG,MAAM;IACR,OAAO;EACV;EACA,eAAe,MAAM;EACrB,eAAe,MAAM;CACvB,CAAC;CAEH,MAAM,eACJ,MACA,gBAEA,YAAY;EACV,YAAY,MAAM;EAClB,SAAS,MAAM;EACf,eAAe;GACb,GAAG,MAAM;IACR,OAAO;EACV;EACA,eAAe,MAAM;CACvB,CAAC;CAEH,MAAM,eACJ,MACA,gBAEA,YAAY;EACV,YAAY,MAAM;EAClB,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe;GACb,GAAG,MAAM;IACR,OAAO;EACV;CACF,CAAC;CAEH,OAAO,OAAO,OAAO,MAAM;GACxB,SAAS;EACV,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe,MAAM;EACrB;EACA;EACA;CACF,CAAC;AACH;AAEA,MAAa,QACX,eAC0E;CAI1E,OAAO,YAAuD;EAC5D;EACA,SAAS,CAAC;EACV,eAAe,CAAC;EAChB,eAAe,CAAC;CAClB,CAAC;AACH"}
1
+ {"version":3,"file":"Table.js","names":["SystemFields.extendWithSystemFields","IdScope.app"],"sources":["../src/Table.ts"],"sourcesContent":["import * as IdScope from \"./IdScope.js\";\nimport * as Lazy from \"./Lazy.js\";\nimport * as SystemFields from \"./SystemFields.js\";\nimport type { TableSchemaToTableValidator } from \"./SchemaToValidator.js\";\nimport type {\n SystemFields as ConvexSystemFields,\n Expand,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes,\n IndexTiebreakerField,\n SearchIndexConfig,\n VectorIndexConfig,\n} from \"convex/server\";\nimport type { GenericValidator, Validator } from \"convex/values\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\n\nexport const TypeId = \"~@confect/core/Table\";\nexport type TypeId = typeof TypeId;\n\n// -----------------------------------------------------------------------------\n// Predicates\n// -----------------------------------------------------------------------------\n//\n// Both bound `Table`s and `UnnamedTable` callables share the same `[TypeId]`\n// brand. They disambiguate by whether a `tableName` property is set: bound\n// tables have one, unnamed callables do not.\n//\n// The discriminator is `tableName` (not `name`) so it does not collide with\n// the built-in `Function.prototype.name` that every JS function carries.\n\nexport const isTable = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId) && Predicate.hasProperty(u, \"tableName\");\n\nexport const isUnnamedTable = (u: unknown): u is UnnamedAny =>\n Predicate.hasProperty(u, TypeId) && !Predicate.hasProperty(u, \"tableName\");\n\n// -----------------------------------------------------------------------------\n// Bound Table\n// -----------------------------------------------------------------------------\n//\n// A bound `Table` is the client-safe document schema: `Fields`, `Doc`, and\n// the index metadata records. The Convex deploy `tableDefinition` (which\n// value-imports `convex/server`) is produced separately by\n// `@confect/server/Table.tableDefinition`.\n\nexport interface Table<\n Name_ extends string,\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends GenericValidator =\n TableSchemaToTableValidator<TableSchema_>,\n Indexes_ extends GenericTableIndexes = {},\n SearchIndexes_ extends GenericTableSearchIndexes = {},\n VectorIndexes_ extends GenericTableVectorIndexes = {},\n Scope_ extends IdScope.IdScope = IdScope.App,\n> {\n readonly [TypeId]: TypeId;\n readonly tableName: Name_;\n readonly scope: Scope_;\n readonly Fields: TableSchema_;\n readonly Doc: SystemFields.ExtendWithSystemFields<\n Name_,\n TableSchema_,\n Scope_\n >;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n readonly \"~TableValidator\": TableValidator_;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n readonly tableName: string;\n}\n\nexport type AnyWithProps = Table<\n any,\n Schema.Codec<any, any>,\n GenericValidator,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes,\n IdScope.IdScope\n>;\n\n// -----------------------------------------------------------------------------\n// UnnamedTable (callable)\n// -----------------------------------------------------------------------------\n//\n// `Table.make(lazyFields)` returns an `UnnamedTable`: a callable that\n// produces a fully bound `Table` when invoked with a name. Chaining methods\n// (`.index`, `.searchIndex`, `.vectorIndex`) live here and return new\n// `UnnamedTable`s, accumulating plain index metadata records. The\n// user-supplied `lazyFields` callback is just carried through until first\n// access of `Fields`/`Doc` on a bound table. The codegen pipeline emits a\n// wrapper file per user-authored table that simply invokes the unnamed\n// callable with the filename basename.\n\nexport interface UnnamedTable<\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends GenericValidator =\n TableSchemaToTableValidator<TableSchema_>,\n Indexes_ extends GenericTableIndexes = {},\n SearchIndexes_ extends GenericTableSearchIndexes = {},\n VectorIndexes_ extends GenericTableVectorIndexes = {},\n> {\n <\n const Name_ extends string,\n const Scope_ extends IdScope.IdScope = IdScope.App,\n >(\n tableName: Name_,\n scope?: Scope_,\n ): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >;\n\n readonly [TypeId]: TypeId;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n readonly \"~TableValidator\": TableValidator_;\n\n index<\n IndexName extends string,\n FirstFieldPath extends ExtractFieldPaths<TableValidator_>,\n RestFieldPaths extends ExtractFieldPaths<TableValidator_>[],\n >(\n name: IndexName,\n fields: [FirstFieldPath, ...RestFieldPaths],\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Expand<\n Indexes_ &\n Record<\n IndexName,\n [FirstFieldPath, ...RestFieldPaths, IndexTiebreakerField]\n >\n >,\n SearchIndexes_,\n VectorIndexes_\n >;\n\n searchIndex<\n IndexName extends string,\n SearchField extends ExtractFieldPaths<TableValidator_>,\n FilterFields extends ExtractFieldPaths<TableValidator_> = never,\n >(\n name: IndexName,\n indexConfig: Expand<SearchIndexConfig<SearchField, FilterFields>>,\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n Expand<\n SearchIndexes_ &\n Record<\n IndexName,\n {\n searchField: SearchField;\n filterFields: FilterFields;\n }\n >\n >,\n VectorIndexes_\n >;\n\n vectorIndex<\n IndexName extends string,\n VectorField extends ExtractFieldPaths<TableValidator_>,\n FilterFields extends ExtractFieldPaths<TableValidator_> = never,\n >(\n name: IndexName,\n indexConfig: Expand<VectorIndexConfig<VectorField, FilterFields>>,\n ): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n Expand<\n VectorIndexes_ &\n Record<\n IndexName,\n {\n vectorField: VectorField;\n dimensions: number;\n filterFields: FilterFields;\n }\n >\n >\n >;\n}\n\nexport interface UnnamedAny {\n readonly [TypeId]: TypeId;\n}\n\nexport type UnnamedAnyWithProps = UnnamedTable<\n Schema.Codec<any, any>,\n GenericValidator,\n GenericTableIndexes,\n GenericTableSearchIndexes,\n GenericTableVectorIndexes\n>;\n\n// -----------------------------------------------------------------------------\n// Type extractors\n// -----------------------------------------------------------------------------\n\nexport type Name<TableDef extends AnyWithProps> = TableDef[\"tableName\"] &\n string;\n\nexport type TableSchema<TableDef extends AnyWithProps> = TableDef[\"Fields\"];\n\nexport type TableValidator<TableDef extends AnyWithProps> =\n TableDef[\"~TableValidator\"];\n\nexport type Indexes<TableDef extends AnyWithProps> = TableDef[\"indexes\"];\n\nexport type SearchIndexes<TableDef extends AnyWithProps> =\n TableDef[\"searchIndexes\"];\n\nexport type VectorIndexes<TableDef extends AnyWithProps> =\n TableDef[\"vectorIndexes\"];\n\nexport type Doc<TableDef extends AnyWithProps> = TableDef[\"Doc\"];\n\nexport type Fields<TableDef extends AnyWithProps> = TableDef[\"Fields\"];\nexport type Scope<TableDef extends AnyWithProps> = TableDef[\"scope\"];\n\nexport type WithName<\n TableDef extends AnyWithProps,\n Name_ extends string,\n> = TableDef extends { readonly tableName: Name_ } ? TableDef : never;\n\nexport type TablesRecord<Tables extends AnyWithProps> = {\n readonly [TableName_ in Name<Tables>]: WithName<Tables, TableName_>;\n};\n\n// -----------------------------------------------------------------------------\n// Construction\n// -----------------------------------------------------------------------------\n//\n// `make` only stores the user-supplied `lazyFields` callback alongside any\n// chained index metadata. Neither `Fields` nor `Doc` is constructed until\n// first access on a bound `Table`. Each chain step is O(1) (plain object\n// spread of the metadata records) and never invokes the callback. Binding\n// via `unnamed(tableName)` installs lazy memoised getters for `Fields` and\n// `Doc` via `Lazy.defineProperty`, so the first access materialises the\n// value and replaces the getter with a plain data property—second-and-\n// subsequent accesses are observably indistinguishable from a plain\n// property and avoid all function-call overhead.\n\ninterface UnnamedState<\n TableSchema_ extends Schema.Codec<any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n> {\n readonly lazyFields: () => TableSchema_;\n readonly indexes: Indexes_;\n readonly searchIndexes: SearchIndexes_;\n readonly vectorIndexes: VectorIndexes_;\n}\n\nconst makeBound = <\n Name_ extends string,\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends Validator<any, any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n Scope_ extends IdScope.IdScope,\n>(\n tableName: Name_,\n state: UnnamedState<TableSchema_, Indexes_, SearchIndexes_, VectorIndexes_>,\n scope: Scope_,\n): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n> => {\n const bound = {\n [TypeId]: TypeId as TypeId,\n tableName,\n scope,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n } as Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >;\n\n Lazy.defineProperty(bound, \"Fields\", () => state.lazyFields());\n\n Lazy.defineProperty(bound, \"Doc\", () =>\n SystemFields.extendWithSystemFields(\n tableName,\n (bound as { Fields: TableSchema_ }).Fields,\n scope,\n ),\n );\n\n return bound;\n};\n\nconst makeUnnamed = <\n TableSchema_ extends Schema.Codec<any, any>,\n TableValidator_ extends Validator<any, any, any>,\n Indexes_ extends GenericTableIndexes,\n SearchIndexes_ extends GenericTableSearchIndexes,\n VectorIndexes_ extends GenericTableVectorIndexes,\n>(\n state: UnnamedState<TableSchema_, Indexes_, SearchIndexes_, VectorIndexes_>,\n): UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_\n> => {\n type UnnamedTable_ = UnnamedTable<\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_\n >;\n\n type UnnamedTableFunction<FunctionName extends keyof UnnamedTable_> =\n UnnamedTable_[FunctionName];\n\n const bind = <\n const Name_ extends string,\n const Scope_ extends IdScope.IdScope = IdScope.App,\n >(\n tableName: Name_,\n scope?: Scope_,\n ): Table<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n > =>\n makeBound<\n Name_,\n TableSchema_,\n TableValidator_,\n Indexes_,\n SearchIndexes_,\n VectorIndexes_,\n Scope_\n >(tableName, state, (scope ?? IdScope.app) as Scope_);\n\n const index: UnnamedTableFunction<\"index\"> = (name, fields) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: {\n ...state.indexes,\n [name]: fields,\n } as any,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n });\n\n const searchIndex: UnnamedTableFunction<\"searchIndex\"> = (\n name,\n indexConfig,\n ) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: state.indexes,\n searchIndexes: {\n ...state.searchIndexes,\n [name]: indexConfig,\n } as any,\n vectorIndexes: state.vectorIndexes,\n });\n\n const vectorIndex: UnnamedTableFunction<\"vectorIndex\"> = (\n name,\n indexConfig,\n ) =>\n makeUnnamed({\n lazyFields: state.lazyFields,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: {\n ...state.vectorIndexes,\n [name]: indexConfig,\n } as any,\n });\n\n return Object.assign(bind, {\n [TypeId]: TypeId as TypeId,\n indexes: state.indexes,\n searchIndexes: state.searchIndexes,\n vectorIndexes: state.vectorIndexes,\n index,\n searchIndex,\n vectorIndex,\n }) as UnnamedTable_;\n};\n\nexport const make = <const TableSchema_ extends Schema.Codec<any, any>>(\n lazyFields: () => TableSchema_,\n): UnnamedTable<TableSchema_, TableSchemaToTableValidator<TableSchema_>> => {\n type TableValidator_ = TableSchemaToTableValidator<TableSchema_>;\n type UnnamedTable_ = UnnamedTable<TableSchema_, TableValidator_>;\n\n return makeUnnamed<TableSchema_, TableValidator_, {}, {}, {}>({\n lazyFields,\n indexes: {},\n searchIndexes: {},\n vectorIndexes: {},\n }) as UnnamedTable_;\n};\n\n// Vendored types from convex-js, partially modified. Ideally we could use these directly. See https://github.com/get-convex/convex-js/pull/14\n\n/**\n * Extract all of the index field paths within a Convex `Validator`.\n *\n * This is used when declaring table indexes.\n *\n * @public\n */\ntype ExtractFieldPaths<TableValidator_ extends Validator<any, any, any>> =\n // Add in the system fields available in index definitions.\n // This should be everything except for `_id` because thats added to indexes\n // automatically.\n TableValidator_[\"fieldPaths\"] | keyof ConvexSystemFields;\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAa,SAAS;AActB,MAAa,WAAW,MACtB,UAAU,YAAY,GAAA,sBAAS,KAAK,UAAU,YAAY,GAAG,WAAW;AAE1E,MAAa,kBAAkB,MAC7B,UAAU,YAAY,GAAA,sBAAS,KAAK,CAAC,UAAU,YAAY,GAAG,WAAW;AA6O3E,MAAM,aASJ,WACA,OACA,UASG;CACH,MAAM,QAAQ;GACX,SAAS;EACV;EACA;EACA,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe,MAAM;CACvB;CAUA,eAAoB,OAAO,gBAAgB,MAAM,WAAW,CAAC;CAE7D,eAAoB,OAAO,aACzBA,uBACE,WACC,MAAmC,QACpC,KACF,CACF;CAEA,OAAO;AACT;AAEA,MAAM,eAOJ,UAOG;CAYH,MAAM,QAIJ,WACA,UAUA,UAQE,WAAW,OAAQ,SAASC,GAAsB;CAEtD,MAAM,SAAwC,MAAM,WAClD,YAAY;EACV,YAAY,MAAM;EAClB,SAAS;GACP,GAAG,MAAM;IACR,OAAO;EACV;EACA,eAAe,MAAM;EACrB,eAAe,MAAM;CACvB,CAAC;CAEH,MAAM,eACJ,MACA,gBAEA,YAAY;EACV,YAAY,MAAM;EAClB,SAAS,MAAM;EACf,eAAe;GACb,GAAG,MAAM;IACR,OAAO;EACV;EACA,eAAe,MAAM;CACvB,CAAC;CAEH,MAAM,eACJ,MACA,gBAEA,YAAY;EACV,YAAY,MAAM;EAClB,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe;GACb,GAAG,MAAM;IACR,OAAO;EACV;CACF,CAAC;CAEH,OAAO,OAAO,OAAO,MAAM;GACxB,SAAS;EACV,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,eAAe,MAAM;EACrB;EACA;EACA;CACF,CAAC;AACH;AAEA,MAAa,QACX,eAC0E;CAI1E,OAAO,YAAuD;EAC5D;EACA,SAAS,CAAC;EACV,eAAe,CAAC;EAChB,eAAe,CAAC;CAClB,CAAC;AACH"}
package/dist/index.d.ts CHANGED
@@ -1,30 +1,31 @@
1
- export * as Callback from "./Callback";
2
- export * as FunctionProvenance from "./FunctionProvenance";
3
- export * as FunctionSpec from "./FunctionSpec";
4
- export * as GenericId from "./GenericId";
5
- export * as App from "./App";
6
- export * as Auth from "./Auth";
7
- export * as Component from "./Component";
8
- export * as Env from "./Env";
9
- export * as Http from "./Http";
10
- export * as IdScope from "./IdScope";
11
- export * as GroupPath from "./GroupPath";
12
- export * as GroupSpec from "./GroupSpec";
13
- export * as Identifier from "./Identifier";
14
- export * as Lazy from "./Lazy";
15
- export * as Manifest from "./Manifest";
16
- export * as MiddlewareAttachment from "./MiddlewareAttachment";
17
- export * as MiddlewareSpec from "./MiddlewareSpec";
18
- export * as PaginationError from "./PaginationError";
19
- export * as PaginationOptions from "./PaginationOptions";
20
- export * as PaginationResult from "./PaginationResult";
21
- export * as Ref from "./Ref";
22
- export * as Refs from "./Refs";
23
- export * as RuntimeAndFunctionType from "./RuntimeAndFunctionType";
24
- export * as SchemaToValidator from "./SchemaToValidator";
25
- export * as Spec from "./Spec";
26
- export * as SystemFields from "./SystemFields";
27
- export * as Table from "./Table";
28
- export * as Types from "./Types";
29
- export * as UserIdentity from "./UserIdentity";
1
+ export * as Callback from "./Callback.js";
2
+ export * as FunctionProvenance from "./FunctionProvenance.js";
3
+ export * as FunctionSpec from "./FunctionSpec.js";
4
+ export * as GenericId from "./GenericId.js";
5
+ export * as App from "./App.js";
6
+ export * as Auth from "./Auth.js";
7
+ export * as Component from "./Component.js";
8
+ export * as Env from "./Env.js";
9
+ export * as Http from "./Http.js";
10
+ export * as IdScope from "./IdScope.js";
11
+ export * as GroupPath from "./GroupPath.js";
12
+ export * as GroupSpec from "./GroupSpec.js";
13
+ export * as Identifier from "./Identifier.js";
14
+ export * as Lazy from "./Lazy.js";
15
+ export * as Manifest from "./Manifest.js";
16
+ export * as MiddlewareAttachment from "./MiddlewareAttachment.js";
17
+ export * as MiddlewareSpec from "./MiddlewareSpec.js";
18
+ export * as PaginationError from "./PaginationError.js";
19
+ export * as PaginationOptions from "./PaginationOptions.js";
20
+ export * as PaginationResult from "./PaginationResult.js";
21
+ export * as Profile from "./Profile.js";
22
+ export * as Ref from "./Ref.js";
23
+ export * as Refs from "./Refs.js";
24
+ export * as RuntimeAndFunctionType from "./RuntimeAndFunctionType.js";
25
+ export * as SchemaToValidator from "./SchemaToValidator.js";
26
+ export * as Spec from "./Spec.js";
27
+ export * as SystemFields from "./SystemFields.js";
28
+ export * as Table from "./Table.js";
29
+ export * as Types from "./Types.js";
30
+ export * as UserIdentity from "./UserIdentity.js";
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,oBAAoB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,sBAAsB,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -21,10 +21,11 @@ import { GroupPath_exports } from "./GroupPath.js";
21
21
  import { Http_exports } from "./Http.js";
22
22
  import { Manifest_exports } from "./Manifest.js";
23
23
  import { PaginationError_exports } from "./PaginationError.js";
24
+ import { Profile_exports } from "./Profile.js";
24
25
  import { Refs_exports } from "./Refs.js";
25
26
  import { SchemaToValidator_exports } from "./SchemaToValidator.js";
26
27
  import { SystemFields_exports } from "./SystemFields.js";
27
28
  import { Table_exports } from "./Table.js";
28
29
  import { Types_exports } from "./Types.js";
29
30
  import { UserIdentity_exports } from "./UserIdentity.js";
30
- export { App_exports as App, Auth_exports as Auth, Callback_exports as Callback, Component_exports as Component, Env_exports as Env, FunctionProvenance_exports as FunctionProvenance, FunctionSpec_exports as FunctionSpec, GenericId_exports as GenericId, GroupPath_exports as GroupPath, GroupSpec_exports as GroupSpec, Http_exports as Http, IdScope_exports as IdScope, Identifier_exports as Identifier, Lazy_exports as Lazy, Manifest_exports as Manifest, MiddlewareAttachment_exports as MiddlewareAttachment, MiddlewareSpec_exports as MiddlewareSpec, PaginationError_exports as PaginationError, PaginationOptions_exports as PaginationOptions, PaginationResult_exports as PaginationResult, Ref_exports as Ref, Refs_exports as Refs, RuntimeAndFunctionType_exports as RuntimeAndFunctionType, SchemaToValidator_exports as SchemaToValidator, Spec_exports as Spec, SystemFields_exports as SystemFields, Table_exports as Table, Types_exports as Types, UserIdentity_exports as UserIdentity };
31
+ export { App_exports as App, Auth_exports as Auth, Callback_exports as Callback, Component_exports as Component, Env_exports as Env, FunctionProvenance_exports as FunctionProvenance, FunctionSpec_exports as FunctionSpec, GenericId_exports as GenericId, GroupPath_exports as GroupPath, GroupSpec_exports as GroupSpec, Http_exports as Http, IdScope_exports as IdScope, Identifier_exports as Identifier, Lazy_exports as Lazy, Manifest_exports as Manifest, MiddlewareAttachment_exports as MiddlewareAttachment, MiddlewareSpec_exports as MiddlewareSpec, PaginationError_exports as PaginationError, PaginationOptions_exports as PaginationOptions, PaginationResult_exports as PaginationResult, Profile_exports as Profile, Ref_exports as Ref, Refs_exports as Refs, RuntimeAndFunctionType_exports as RuntimeAndFunctionType, SchemaToValidator_exports as SchemaToValidator, Spec_exports as Spec, SystemFields_exports as SystemFields, Table_exports as Table, Types_exports as Types, UserIdentity_exports as UserIdentity };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaganref/confect-core",
3
- "version": "10.3.1-fork.2",
3
+ "version": "10.3.1-fork.21",
4
4
  "peerDependencies": {
5
5
  "convex": "^1.46.0",
6
6
  "effect": "^4.0.0"
package/src/App.ts CHANGED
@@ -2,7 +2,8 @@ import type { ComponentDefinition, EnvDefinition } from "convex/server";
2
2
  import type { Infer, Validator } from "convex/values";
3
3
  import type * as HttpApi from "effect/http-api/HttpApi";
4
4
  import * as Predicate from "effect/Predicate";
5
- import type * as Env from "./Env";
5
+ import type * as Env from "./Env.js";
6
+ import type * as MiddlewareSpec from "./MiddlewareSpec.js";
6
7
 
7
8
  const TypeId = "~@confect/core/App";
8
9
  const MountTypeId = "~@confect/core/App/Mount";
@@ -48,13 +49,21 @@ type HttpOptions =
48
49
  | { readonly httpPrefix?: never; readonly api?: never }
49
50
  | { readonly httpPrefix: HttpPrefix; readonly api?: Api };
50
51
 
51
- export type Options<D extends Definition> = HttpOptions &
52
- ([RequiredKeys<EnvOf<D>>] extends [never]
52
+ export type Options<D extends Definition> = HttpOptions & {
53
+ /**
54
+ * The package specifier of the module whose `register(t, name)` the generated
55
+ * test registry calls for this mount, in place of the component package's own
56
+ * `<package>/test`. The kit registers the mount's children.
57
+ */
58
+ readonly testing?: string;
59
+ } & ([RequiredKeys<EnvOf<D>>] extends [never]
53
60
  ? { readonly env?: Bindings<EnvOf<D>> }
54
61
  : { readonly env: Bindings<EnvOf<D>> });
55
62
 
56
63
  type Exact<D extends Definition, O> = {
57
- readonly [K in Exclude<keyof O, "env" | "httpPrefix" | "api">]: never;
64
+ readonly [
65
+ K in Exclude<keyof O, "env" | "httpPrefix" | "api" | "testing">
66
+ ]: never;
58
67
  } & (O extends { readonly env: infer B }
59
68
  ? {
60
69
  readonly env: { readonly [K in Exclude<keyof B, keyof EnvOf<D>>]: never };
@@ -66,6 +75,7 @@ export interface MountData {
66
75
  readonly httpPrefix: HttpPrefix | undefined;
67
76
  readonly api: Api | undefined;
68
77
  readonly env: Readonly<Record<string, string | Env.AnyEntry | undefined>>;
78
+ readonly testing: string | undefined;
69
79
  }
70
80
 
71
81
  /**
@@ -106,6 +116,7 @@ export function mount(
106
116
  readonly httpPrefix?: HttpPrefix;
107
117
  readonly api?: Api;
108
118
  readonly env?: MountData["env"];
119
+ readonly testing?: string;
109
120
  },
110
121
  ): AnyMount {
111
122
  return {
@@ -114,6 +125,7 @@ export function mount(
114
125
  httpPrefix: options?.httpPrefix,
115
126
  api: options?.api,
116
127
  env: options?.env ?? {},
128
+ testing: options?.testing,
117
129
  // The overloads above carry the precise types; this body serves both.
118
130
  } as AnyMount;
119
131
  }
@@ -144,6 +156,7 @@ export interface App<
144
156
  readonly kind: K;
145
157
  readonly env: E;
146
158
  readonly mounts: M;
159
+ readonly requiresMiddleware: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>;
147
160
  }
148
161
 
149
162
  export type Any = App<Env.Any, Readonly<Record<string, AnyMount>>>;
@@ -175,6 +188,7 @@ export const make = <
175
188
  >(
176
189
  options: {
177
190
  readonly env: E;
191
+ readonly requiresMiddleware?: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>;
178
192
  readonly mounts?: M & OwnedBy<NoInfer<Env.Name<E>>, NoInfer<M>>;
179
193
  } & ([K] extends ["app"] ? { readonly kind?: K } : { readonly kind: K }),
180
194
  ): App<E, M, K> => ({
@@ -182,6 +196,7 @@ export const make = <
182
196
  kind: options.kind ?? ("app" as K),
183
197
  env: options.env,
184
198
  mounts: options.mounts ?? ({} as M),
199
+ requiresMiddleware: options.requiresMiddleware ?? [],
185
200
  });
186
201
 
187
202
  export const isApp = (u: unknown): u is Any =>
@@ -207,4 +222,5 @@ export const mounts = (
207
222
  httpPrefix: installed.httpPrefix,
208
223
  api: installed.api,
209
224
  env: installed.env,
225
+ testing: installed.testing,
210
226
  }));