@confect/server 1.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +7 -0
  3. package/dist/ActionCtx.d.ts +12 -0
  4. package/dist/ActionCtx.d.ts.map +1 -0
  5. package/dist/ActionCtx.js +10 -0
  6. package/dist/ActionCtx.js.map +1 -0
  7. package/dist/ActionRunner.d.ts +15 -0
  8. package/dist/ActionRunner.d.ts.map +1 -0
  9. package/dist/ActionRunner.js +23 -0
  10. package/dist/ActionRunner.js.map +1 -0
  11. package/dist/Api.d.ts +27 -0
  12. package/dist/Api.d.ts.map +1 -0
  13. package/dist/Api.js +26 -0
  14. package/dist/Api.js.map +1 -0
  15. package/dist/Auth.d.ts +30 -0
  16. package/dist/Auth.d.ts.map +1 -0
  17. package/dist/Auth.js +24 -0
  18. package/dist/Auth.js.map +1 -0
  19. package/dist/DataModel.d.ts +33 -0
  20. package/dist/DataModel.d.ts.map +1 -0
  21. package/dist/DataModel.js +6 -0
  22. package/dist/DataModel.js.map +1 -0
  23. package/dist/DatabaseReader.d.ts +73 -0
  24. package/dist/DatabaseReader.d.ts.map +1 -0
  25. package/dist/DatabaseReader.js +32 -0
  26. package/dist/DatabaseReader.js.map +1 -0
  27. package/dist/DatabaseSchema.d.ts +139 -0
  28. package/dist/DatabaseSchema.d.ts.map +1 -0
  29. package/dist/DatabaseSchema.js +45 -0
  30. package/dist/DatabaseSchema.js.map +1 -0
  31. package/dist/DatabaseWriter.d.ts +39 -0
  32. package/dist/DatabaseWriter.d.ts.map +1 -0
  33. package/dist/DatabaseWriter.js +43 -0
  34. package/dist/DatabaseWriter.js.map +1 -0
  35. package/dist/Document.d.ts +47 -0
  36. package/dist/Document.d.ts.map +1 -0
  37. package/dist/Document.js +66 -0
  38. package/dist/Document.js.map +1 -0
  39. package/dist/FunctionImpl.d.ts +34 -0
  40. package/dist/FunctionImpl.d.ts.map +1 -0
  41. package/dist/FunctionImpl.js +35 -0
  42. package/dist/FunctionImpl.js.map +1 -0
  43. package/dist/GroupImpl.d.ts +24 -0
  44. package/dist/GroupImpl.d.ts.map +1 -0
  45. package/dist/GroupImpl.js +14 -0
  46. package/dist/GroupImpl.js.map +1 -0
  47. package/dist/Handler.d.ts +31 -0
  48. package/dist/Handler.d.ts.map +1 -0
  49. package/dist/Handler.js +6 -0
  50. package/dist/Handler.js.map +1 -0
  51. package/dist/HttpApi.d.ts +26 -0
  52. package/dist/HttpApi.d.ts.map +1 -0
  53. package/dist/HttpApi.js +74 -0
  54. package/dist/HttpApi.js.map +1 -0
  55. package/dist/Impl.d.ts +24 -0
  56. package/dist/Impl.d.ts.map +1 -0
  57. package/dist/Impl.js +28 -0
  58. package/dist/Impl.js.map +1 -0
  59. package/dist/MutationCtx.d.ts +12 -0
  60. package/dist/MutationCtx.d.ts.map +1 -0
  61. package/dist/MutationCtx.js +10 -0
  62. package/dist/MutationCtx.js.map +1 -0
  63. package/dist/MutationRunner.d.ts +24 -0
  64. package/dist/MutationRunner.d.ts.map +1 -0
  65. package/dist/MutationRunner.js +33 -0
  66. package/dist/MutationRunner.js.map +1 -0
  67. package/dist/OrderedQuery.d.ts +23 -0
  68. package/dist/OrderedQuery.d.ts.map +1 -0
  69. package/dist/OrderedQuery.js +34 -0
  70. package/dist/OrderedQuery.js.map +1 -0
  71. package/dist/QueryCtx.d.ts +12 -0
  72. package/dist/QueryCtx.d.ts.map +1 -0
  73. package/dist/QueryCtx.js +10 -0
  74. package/dist/QueryCtx.js.map +1 -0
  75. package/dist/QueryInitializer.d.ts +49 -0
  76. package/dist/QueryInitializer.d.ts.map +1 -0
  77. package/dist/QueryInitializer.js +83 -0
  78. package/dist/QueryInitializer.js.map +1 -0
  79. package/dist/QueryRunner.d.ts +14 -0
  80. package/dist/QueryRunner.d.ts.map +1 -0
  81. package/dist/QueryRunner.js +23 -0
  82. package/dist/QueryRunner.js.map +1 -0
  83. package/dist/RegisteredFunctions.d.ts +66 -0
  84. package/dist/RegisteredFunctions.d.ts.map +1 -0
  85. package/dist/RegisteredFunctions.js +71 -0
  86. package/dist/RegisteredFunctions.js.map +1 -0
  87. package/dist/Registry.d.ts +15 -0
  88. package/dist/Registry.d.ts.map +1 -0
  89. package/dist/Registry.js +10 -0
  90. package/dist/Registry.js.map +1 -0
  91. package/dist/RegistryItem.d.ts +31 -0
  92. package/dist/RegistryItem.d.ts.map +1 -0
  93. package/dist/RegistryItem.js +20 -0
  94. package/dist/RegistryItem.js.map +1 -0
  95. package/dist/Scheduler.d.ts +23 -0
  96. package/dist/Scheduler.d.ts.map +1 -0
  97. package/dist/Scheduler.js +24 -0
  98. package/dist/Scheduler.js.map +1 -0
  99. package/dist/SchemaToValidator.d.ts +88 -0
  100. package/dist/SchemaToValidator.d.ts.map +1 -0
  101. package/dist/SchemaToValidator.js +155 -0
  102. package/dist/SchemaToValidator.js.map +1 -0
  103. package/dist/Storage.d.ts +69 -0
  104. package/dist/Storage.d.ts.map +1 -0
  105. package/dist/Storage.js +46 -0
  106. package/dist/Storage.js.map +1 -0
  107. package/dist/Table.d.ts +247 -0
  108. package/dist/Table.d.ts.map +1 -0
  109. package/dist/Table.js +97 -0
  110. package/dist/Table.js.map +1 -0
  111. package/dist/TableInfo.d.ts +48 -0
  112. package/dist/TableInfo.d.ts.map +1 -0
  113. package/dist/TableInfo.js +6 -0
  114. package/dist/TableInfo.js.map +1 -0
  115. package/dist/VectorSearch.d.ts +42 -0
  116. package/dist/VectorSearch.d.ts.map +1 -0
  117. package/dist/VectorSearch.js +16 -0
  118. package/dist/VectorSearch.js.map +1 -0
  119. package/dist/_virtual/rolldown_runtime.js +13 -0
  120. package/dist/index.d.ts +30 -0
  121. package/dist/index.js +31 -0
  122. package/dist/internal/utils.d.ts +15 -0
  123. package/dist/internal/utils.d.ts.map +1 -0
  124. package/dist/internal/utils.js +49 -0
  125. package/dist/internal/utils.js.map +1 -0
  126. package/package.json +90 -0
  127. package/src/ActionCtx.ts +9 -0
  128. package/src/ActionRunner.ts +28 -0
  129. package/src/Api.ts +63 -0
  130. package/src/Auth.ts +31 -0
  131. package/src/DataModel.ts +69 -0
  132. package/src/DatabaseReader.ts +75 -0
  133. package/src/DatabaseSchema.ts +134 -0
  134. package/src/DatabaseWriter.ts +166 -0
  135. package/src/Document.ts +200 -0
  136. package/src/FunctionImpl.ts +112 -0
  137. package/src/GroupImpl.ts +60 -0
  138. package/src/Handler.ts +105 -0
  139. package/src/HttpApi.ts +232 -0
  140. package/src/Impl.ts +57 -0
  141. package/src/MutationCtx.ts +11 -0
  142. package/src/MutationRunner.ts +41 -0
  143. package/src/OrderedQuery.ts +109 -0
  144. package/src/QueryCtx.ts +9 -0
  145. package/src/QueryInitializer.ts +308 -0
  146. package/src/QueryRunner.ts +29 -0
  147. package/src/RegisteredFunctions.ts +381 -0
  148. package/src/Registry.ts +13 -0
  149. package/src/RegistryItem.ts +44 -0
  150. package/src/Scheduler.ts +39 -0
  151. package/src/SchemaToValidator.ts +619 -0
  152. package/src/Storage.ts +86 -0
  153. package/src/Table.ts +439 -0
  154. package/src/TableInfo.ts +91 -0
  155. package/src/VectorSearch.ts +46 -0
  156. package/src/index.ts +29 -0
  157. package/src/internal/utils.ts +87 -0
@@ -0,0 +1,155 @@
1
+ import { __export } from "./_virtual/rolldown_runtime.js";
2
+ import { Array, Cause, Data, Effect, Exit, Match, Number, Option, Predicate, Schema, SchemaAST, String, pipe } from "effect";
3
+ import { v } from "convex/values";
4
+ import * as GenericId$1 from "@confect/core/GenericId";
5
+
6
+ //#region src/SchemaToValidator.ts
7
+ var SchemaToValidator_exports = /* @__PURE__ */ __export({
8
+ EmptyTupleIsNotSupportedError: () => EmptyTupleIsNotSupportedError,
9
+ IndexSignaturesAreNotSupportedError: () => IndexSignaturesAreNotSupportedError,
10
+ MixedIndexAndPropertySignaturesAreNotSupportedError: () => MixedIndexAndPropertySignaturesAreNotSupportedError,
11
+ OptionalTupleElementsAreNotSupportedError: () => OptionalTupleElementsAreNotSupportedError,
12
+ TopLevelMustBeObjectError: () => TopLevelMustBeObjectError,
13
+ TopLevelMustBeObjectOrUnionError: () => TopLevelMustBeObjectOrUnionError,
14
+ UnsupportedPropertySignatureKeyTypeError: () => UnsupportedPropertySignatureKeyTypeError,
15
+ UnsupportedSchemaTypeError: () => UnsupportedSchemaTypeError,
16
+ compileArgsSchema: () => compileArgsSchema,
17
+ compileAst: () => compileAst,
18
+ compileReturnsSchema: () => compileReturnsSchema,
19
+ compileSchema: () => compileSchema,
20
+ compileTableSchema: () => compileTableSchema,
21
+ isRecursive: () => isRecursive
22
+ });
23
+ const compileArgsSchema = (argsSchema) => {
24
+ const ast = Schema.encodedSchema(argsSchema).ast;
25
+ return pipe(ast, Match.value, Match.tag("TypeLiteral", (typeLiteralAst) => Array.isEmptyReadonlyArray(typeLiteralAst.indexSignatures) ? handlePropertySignatures(typeLiteralAst) : Effect.fail(new IndexSignaturesAreNotSupportedError())), Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())), runSyncThrow);
26
+ };
27
+ const compileReturnsSchema = (schema) => runSyncThrow(compileAst(Schema.encodedSchema(schema).ast));
28
+ const compileTableSchema = (schema) => {
29
+ const ast = Schema.encodedSchema(schema).ast;
30
+ return pipe(ast, Match.value, Match.tag("TypeLiteral", ({ indexSignatures }) => Array.isEmptyReadonlyArray(indexSignatures) ? compileAst(ast) : Effect.fail(new IndexSignaturesAreNotSupportedError())), Match.tag("Union", (unionAst) => compileAst(unionAst)), Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())), runSyncThrow);
31
+ };
32
+ const compileSchema = (schema) => runSyncThrow(compileAst(schema.ast));
33
+ const isRecursive = (ast) => pipe(ast, Match.value, Match.tag("Literal", "BooleanKeyword", "StringKeyword", "NumberKeyword", "BigIntKeyword", "UnknownKeyword", "AnyKeyword", "Declaration", "UniqueSymbol", "SymbolKeyword", "UndefinedKeyword", "VoidKeyword", "NeverKeyword", "Enums", "TemplateLiteral", "ObjectKeyword", "Transformation", () => false), Match.tag("Union", ({ types }) => Array.some(types, (type) => isRecursive(type))), Match.tag("TypeLiteral", ({ propertySignatures }) => Array.some(propertySignatures, ({ type }) => isRecursive(type))), Match.tag("TupleType", ({ elements: optionalElements, rest: elements }) => Array.some(optionalElements, (optionalElement) => isRecursive(optionalElement.type)) || Array.some(elements, (element) => isRecursive(element.type))), Match.tag("Refinement", ({ from }) => isRecursive(from)), Match.tag("Suspend", () => true), Match.exhaustive);
34
+ const compileAst = (ast, isOptionalPropertyOfTypeLiteral = false) => isRecursive(ast) ? Effect.succeed(v.any()) : pipe(ast, Match.value, Match.tag("Literal", ({ literal }) => pipe(literal, Match.value, Match.whenOr(Match.string, Match.number, Match.bigint, Match.boolean, (l) => v.literal(l)), Match.when(Match.null, () => v.null()), Match.exhaustive, Effect.succeed)), Match.tag("BooleanKeyword", () => Effect.succeed(v.boolean())), Match.tag("StringKeyword", (stringAst) => GenericId$1.tableName(stringAst).pipe(Option.match({
35
+ onNone: () => Effect.succeed(v.string()),
36
+ onSome: (tableName) => Effect.succeed(v.id(tableName))
37
+ }))), Match.tag("NumberKeyword", () => Effect.succeed(v.float64())), Match.tag("BigIntKeyword", () => Effect.succeed(v.int64())), Match.tag("Union", (unionAst) => handleUnion(unionAst, isOptionalPropertyOfTypeLiteral)), Match.tag("TypeLiteral", (typeLiteralAst) => handleTypeLiteral(typeLiteralAst)), Match.tag("TupleType", (tupleTypeAst) => handleTupleType(tupleTypeAst)), Match.tag("UnknownKeyword", "AnyKeyword", () => Effect.succeed(v.any())), Match.tag("Declaration", (declaration) => Effect.mapBoth(declaration.decodeUnknown(...declaration.typeParameters)(/* @__PURE__ */ new ArrayBuffer(0), {}, declaration), {
38
+ onSuccess: () => v.bytes(),
39
+ onFailure: () => new UnsupportedSchemaTypeError({ schemaType: declaration._tag })
40
+ })), Match.tag("Refinement", ({ from }) => compileAst(from)), Match.tag("Suspend", () => Effect.succeed(v.any())), Match.tag("UniqueSymbol", "SymbolKeyword", "UndefinedKeyword", "VoidKeyword", "NeverKeyword", "Enums", "TemplateLiteral", "ObjectKeyword", "Transformation", () => new UnsupportedSchemaTypeError({ schemaType: ast._tag })), Match.exhaustive);
41
+ const handleUnion = ({ types: [first, second, ...rest] }, isOptionalPropertyOfTypeLiteral) => Effect.gen(function* () {
42
+ const validatorEffects = isOptionalPropertyOfTypeLiteral ? Array.filterMap([
43
+ first,
44
+ second,
45
+ ...rest
46
+ ], (type) => Predicate.not(SchemaAST.isUndefinedKeyword)(type) ? Option.some(compileAst(type)) : Option.none()) : Array.map([
47
+ first,
48
+ second,
49
+ ...rest
50
+ ], (type) => compileAst(type));
51
+ const [firstValidator, secondValidator, ...restValidators] = yield* Effect.all(validatorEffects);
52
+ /* v8 ignore start */
53
+ if (firstValidator === void 0) return yield* Effect.dieMessage("First validator of union is undefined; this should be impossible.");
54
+ else if (secondValidator === void 0) return firstValidator;
55
+ else return v.union(firstValidator, secondValidator, ...restValidators);
56
+ });
57
+ const handleTypeLiteral = (typeLiteralAst) => pipe(typeLiteralAst.indexSignatures, Array.head, Option.match({
58
+ onNone: () => Effect.map(handlePropertySignatures(typeLiteralAst), v.object),
59
+ onSome: ({ parameter, type }) => pipe(typeLiteralAst.propertySignatures, Array.head, Option.match({
60
+ onNone: () => Effect.map(Effect.all({
61
+ parameter_: compileAst(parameter),
62
+ type_: compileAst(type)
63
+ }), ({ parameter_, type_ }) => v.record(parameter_, type_)),
64
+ onSome: () => Effect.fail(new MixedIndexAndPropertySignaturesAreNotSupportedError())
65
+ }))
66
+ }));
67
+ const handleTupleType = ({ elements, rest }) => Effect.gen(function* () {
68
+ const restValidator = pipe(rest, Array.head, Option.map(({ type }) => compileAst(type)), Effect.flatten);
69
+ const [f, s, ...r] = elements;
70
+ const elementToValidator = ({ type, isOptional }) => Effect.if(isOptional, {
71
+ onTrue: () => Effect.fail(new OptionalTupleElementsAreNotSupportedError()),
72
+ onFalse: () => compileAst(type)
73
+ });
74
+ const arrayItemsValidator = yield* f === void 0 ? pipe(restValidator, Effect.catchTag("NoSuchElementException", () => Effect.fail(new EmptyTupleIsNotSupportedError()))) : s === void 0 ? elementToValidator(f) : Effect.gen(function* () {
75
+ const firstValidator = yield* elementToValidator(f);
76
+ const secondValidator = yield* elementToValidator(s);
77
+ const restValidators = yield* Effect.forEach(r, elementToValidator);
78
+ return v.union(firstValidator, secondValidator, ...restValidators);
79
+ });
80
+ return v.array(arrayItemsValidator);
81
+ });
82
+ const handlePropertySignatures = (typeLiteralAst) => pipe(typeLiteralAst.propertySignatures, Effect.forEach(({ type, name, isOptional }) => {
83
+ if (String.isString(name)) return Option.match(Number.parse(name), {
84
+ onNone: () => Effect.gen(function* () {
85
+ const validator = yield* compileAst(type, isOptional);
86
+ return {
87
+ propertyName: name,
88
+ validator: isOptional ? v.optional(validator) : validator
89
+ };
90
+ }),
91
+ onSome: (number) => Effect.fail(new UnsupportedPropertySignatureKeyTypeError({ propertyKey: number }))
92
+ });
93
+ else return Effect.fail(new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }));
94
+ }), Effect.andThen((propertyNamesWithValidators) => pipe(propertyNamesWithValidators, Array.reduce({}, (acc, { propertyName, validator }) => ({
95
+ [propertyName]: validator,
96
+ ...acc
97
+ })), Effect.succeed)));
98
+ const runSyncThrow = (effect) => pipe(effect, Effect.runSyncExit, Exit.match({
99
+ onSuccess: (validator) => validator,
100
+ onFailure: (cause) => {
101
+ throw Cause.squash(cause);
102
+ }
103
+ }));
104
+ var TopLevelMustBeObjectError = class extends Data.TaggedError("TopLevelMustBeObjectError") {
105
+ /* v8 ignore start */
106
+ get message() {
107
+ return "Top level schema must be an object";
108
+ }
109
+ };
110
+ var TopLevelMustBeObjectOrUnionError = class extends Data.TaggedError("TopLevelMustBeObjectOrUnionError") {
111
+ /* v8 ignore start */
112
+ get message() {
113
+ return "Top level schema must be an object or a union";
114
+ }
115
+ };
116
+ var UnsupportedPropertySignatureKeyTypeError = class extends Data.TaggedError("UnsupportedPropertySignatureKeyTypeError") {
117
+ /* v8 ignore start */
118
+ get message() {
119
+ return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this.propertyKey}' but only 'string' properties are supported.`;
120
+ }
121
+ };
122
+ var EmptyTupleIsNotSupportedError = class extends Data.TaggedError("EmptyTupleIsNotSupportedError") {
123
+ /* v8 ignore start */
124
+ get message() {
125
+ return "Tuple must have at least one element";
126
+ }
127
+ };
128
+ var UnsupportedSchemaTypeError = class extends Data.TaggedError("UnsupportedSchemaTypeError") {
129
+ /* v8 ignore start */
130
+ get message() {
131
+ return `Unsupported schema type '${this.schemaType}'`;
132
+ }
133
+ };
134
+ var IndexSignaturesAreNotSupportedError = class extends Data.TaggedError("IndexSignaturesAreNotSupportedError") {
135
+ /* v8 ignore start */
136
+ get message() {
137
+ return "Index signatures are not supported";
138
+ }
139
+ };
140
+ var MixedIndexAndPropertySignaturesAreNotSupportedError = class extends Data.TaggedError("MixedIndexAndPropertySignaturesAreNotSupportedError") {
141
+ /* v8 ignore start */
142
+ get message() {
143
+ return "Mixed index and property signatures are not supported";
144
+ }
145
+ };
146
+ var OptionalTupleElementsAreNotSupportedError = class extends Data.TaggedError("OptionalTupleElementsAreNotSupportedError") {
147
+ /* v8 ignore start */
148
+ get message() {
149
+ return "Optional tuple elements are not supported";
150
+ }
151
+ };
152
+
153
+ //#endregion
154
+ export { EmptyTupleIsNotSupportedError, IndexSignaturesAreNotSupportedError, MixedIndexAndPropertySignaturesAreNotSupportedError, OptionalTupleElementsAreNotSupportedError, SchemaToValidator_exports, TopLevelMustBeObjectError, TopLevelMustBeObjectOrUnionError, UnsupportedPropertySignatureKeyTypeError, UnsupportedSchemaTypeError, compileArgsSchema, compileAst, compileReturnsSchema, compileSchema, compileTableSchema, isRecursive };
155
+ //# sourceMappingURL=SchemaToValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaToValidator.js","names":["GenericId"],"sources":["../src/SchemaToValidator.ts"],"sourcesContent":["import type {\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 VOptional,\n VRecord,\n VString,\n VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport {\n Array,\n Cause,\n Data,\n Effect,\n Exit,\n Match,\n Number,\n Option,\n type ParseResult,\n pipe,\n Predicate,\n Schema,\n SchemaAST,\n String,\n} from \"effect\";\n\nimport * as GenericId from \"@confect/core/GenericId\";\nimport type {\n DeepMutable,\n IsAny,\n IsOptional,\n IsRecord,\n IsRecursive,\n IsUnion,\n IsValueLiteral,\n TypeError,\n UnionToTuple,\n} from \"@confect/core/Types\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n argsSchema: Schema.Schema<ConfectValue, ConvexValue>,\n): PropertyValidators => {\n const ast = Schema.encodedSchema(argsSchema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"TypeLiteral\", (typeLiteralAst) =>\n Array.isEmptyReadonlyArray(typeLiteralAst.indexSignatures)\n ? handlePropertySignatures(typeLiteralAst)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n runSyncThrow,\n );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n schema: Schema.Schema<ConfectValue, ConvexValue>,\n): Validator<any, any, any> =>\n runSyncThrow(compileAst(Schema.encodedSchema(schema).ast));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n TableSchema extends Schema.Schema.AnyNoContext,\n> =\n ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n | VObject<any, any, any, any>\n | VUnion<any, any, any, any>\n ? Vd\n : // TODO: Add type error message\n never;\n\nexport const compileTableSchema = <\n TableSchema extends Schema.Schema.AnyNoContext,\n>(\n schema: TableSchema,\n): TableSchemaToTableValidator<TableSchema> => {\n const ast = Schema.encodedSchema(schema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"TypeLiteral\", ({ indexSignatures }) =>\n Array.isEmptyReadonlyArray(indexSignatures)\n ? (compileAst(ast) as Effect.Effect<any>)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.tag(\"Union\", (unionAst) => compileAst(unionAst)),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n runSyncThrow,\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\nexport type ValueToValidator<Vl> =\n IsRecursive<Vl> extends true\n ? VAny\n : [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny\n : [Vl] extends [ReadonlyValue]\n ? Vl extends {\n __tableName: infer TableName extends string;\n }\n ? VId<GenericId.GenericId<TableName>>\n : IsValueLiteral<Vl> extends true\n ? VLiteral<Vl>\n : [Vl] extends [null]\n ? VNull\n : [Vl] extends [boolean]\n ? VBoolean\n : IsUnion<Vl> extends true\n ? UnionValueToValidator<Vl>\n : [Vl] extends [number]\n ? VFloat64\n : [Vl] extends [bigint]\n ? VInt64\n : [Vl] extends [string]\n ? VString\n : [Vl] extends [ArrayBuffer]\n ? VBytes\n : Vl extends ReadonlyArray<ReadonlyValue>\n ? ArrayValueToValidator<Vl>\n : Vl extends ReadonlyRecordValue\n ? RecordValueToValidator<Vl>\n : TypeError<\"Unexpected value\", Vl>\n : TypeError<\"Provided value is not a valid Convex value\", Vl>;\n\ntype ArrayValueToValidator<Vl extends ReadonlyArray<ReadonlyValue>> =\n Vl extends ReadonlyArray<infer El extends ReadonlyValue>\n ? ValueToValidator<El> extends infer Vd extends Validator<any, any, any>\n ? VArray<DeepMutable<El[]>, Vd>\n : never\n : never;\n\ntype RecordValueToValidator<Vl> = Vl extends ReadonlyRecordValue\n ? {\n -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n ? IsOptional<Vl, K> extends true\n ? VOptional<VAny>\n : VAny\n : UndefinedOrValueToValidator<Vl[K]>;\n } extends infer VdRecord extends Record<string, any>\n ? {\n -readonly [K in keyof Vl]: undefined extends Vl[K]\n ? DeepMutable<Exclude<Vl[K], undefined>>\n : DeepMutable<Vl[K]>;\n } extends infer VlRecord extends Record<string, any>\n ? IsRecord<VlRecord> extends true\n ? VRecord<VlRecord, VString, VdRecord[keyof VdRecord]>\n : VObject<VlRecord, VdRecord>\n : never\n : never\n : never;\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n undefined extends Vl\n ? [Vl] extends [(infer Val extends ReadonlyValue) | undefined]\n ? ValueToValidator<Val> extends infer Vd extends Validator<\n any,\n \"required\",\n any\n >\n ? VOptional<Vd>\n : never\n : never\n : [Vl] extends [ReadonlyValue]\n ? ValueToValidator<Vl>\n : never;\n\ntype UnionValueToValidator<Vl extends ReadonlyValue> = [Vl] extends [\n ReadonlyValue,\n]\n ? IsUnion<Vl> extends true\n ? UnionToTuple<Vl> extends infer VlTuple extends\n ReadonlyArray<ReadonlyValue>\n ? ValueTupleToValidatorTuple<VlTuple> extends infer VdTuple extends\n Validator<any, \"required\", any>[]\n ? VUnion<DeepMutable<Vl>, VdTuple>\n : TypeError<\"Failed to convert value tuple to validator tuple\">\n : TypeError<\"Failed to convert union to tuple\">\n : TypeError<\"Expected a union of values, but got a single value instead\">\n : TypeError<\"Provided value is not a valid Convex value\">;\n\ntype ValueTupleToValidatorTuple<VlTuple extends ReadonlyArray<ReadonlyValue>> =\n VlTuple extends\n | [true, false, ...infer VlRest extends ReadonlyArray<ReadonlyValue>]\n | [false, true, ...infer VlRest extends ReadonlyArray<ReadonlyValue>]\n ? ValueTupleToValidatorTuple<VlRest> extends infer VdRest extends Validator<\n any,\n any,\n any\n >[]\n ? [VBoolean<boolean>, ...VdRest]\n : never\n : VlTuple extends [\n infer Vl extends ReadonlyValue,\n ...infer VlRest extends ReadonlyArray<ReadonlyValue>,\n ]\n ? ValueToValidator<Vl> extends infer Vd extends Validator<any, any, any>\n ? ValueTupleToValidatorTuple<VlRest> extends infer VdRest extends\n Validator<any, \"required\", any>[]\n ? [Vd, ...VdRest]\n : never\n : never\n : [];\n\nexport const compileSchema = <T, E>(\n schema: Schema.Schema<T, E>,\n // TODO: Can `ValueToValidator` here just accept `E` directly?\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n runSyncThrow(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 \"BooleanKeyword\",\n \"StringKeyword\",\n \"NumberKeyword\",\n \"BigIntKeyword\",\n \"UnknownKeyword\",\n \"AnyKeyword\",\n \"Declaration\",\n \"UniqueSymbol\",\n \"SymbolKeyword\",\n \"UndefinedKeyword\",\n \"VoidKeyword\",\n \"NeverKeyword\",\n \"Enums\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n \"Transformation\",\n () => false,\n ),\n Match.tag(\"Union\", ({ types }) =>\n Array.some(types, (type) => isRecursive(type)),\n ),\n Match.tag(\"TypeLiteral\", ({ propertySignatures }) =>\n Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n ),\n Match.tag(\n \"TupleType\",\n ({ elements: optionalElements, rest: elements }) =>\n Array.some(optionalElements, (optionalElement) =>\n isRecursive(optionalElement.type),\n ) || Array.some(elements, (element) => isRecursive(element.type)),\n ),\n Match.tag(\"Refinement\", ({ from }) => isRecursive(from)),\n Match.tag(\"Suspend\", () => true),\n Match.exhaustive,\n );\n\nexport const compileAst = (\n ast: SchemaAST.AST,\n isOptionalPropertyOfTypeLiteral = false,\n): Effect.Effect<\n Validator<any, any, any>,\n | UnsupportedSchemaTypeError\n | UnsupportedPropertySignatureKeyTypeError\n | IndexSignaturesAreNotSupportedError\n | MixedIndexAndPropertySignaturesAreNotSupportedError\n | OptionalTupleElementsAreNotSupportedError\n | EmptyTupleIsNotSupportedError\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.when(Match.null, () => v.null()),\n Match.exhaustive,\n Effect.succeed,\n ),\n ),\n Match.tag(\"BooleanKeyword\", () => Effect.succeed(v.boolean())),\n Match.tag(\"StringKeyword\", (stringAst) =>\n GenericId.tableName(stringAst).pipe(\n Option.match({\n onNone: () => Effect.succeed(v.string()),\n onSome: (tableName) => Effect.succeed(v.id(tableName)),\n }),\n ),\n ),\n Match.tag(\"NumberKeyword\", () => Effect.succeed(v.float64())),\n Match.tag(\"BigIntKeyword\", () => Effect.succeed(v.int64())),\n Match.tag(\"Union\", (unionAst) =>\n handleUnion(unionAst, isOptionalPropertyOfTypeLiteral),\n ),\n Match.tag(\"TypeLiteral\", (typeLiteralAst) =>\n handleTypeLiteral(typeLiteralAst),\n ),\n Match.tag(\"TupleType\", (tupleTypeAst) => handleTupleType(tupleTypeAst)),\n Match.tag(\"UnknownKeyword\", \"AnyKeyword\", () =>\n Effect.succeed(v.any()),\n ),\n Match.tag(\"Declaration\", (declaration) =>\n Effect.mapBoth(\n declaration.decodeUnknown(...declaration.typeParameters)(\n new ArrayBuffer(0),\n {},\n declaration,\n ) as Effect.Effect<ArrayBuffer, ParseResult.ParseIssue>,\n {\n onSuccess: () => v.bytes(),\n onFailure: () =>\n new UnsupportedSchemaTypeError({\n schemaType: declaration._tag,\n }),\n },\n ),\n ),\n Match.tag(\"Refinement\", ({ from }) => compileAst(from)),\n Match.tag(\"Suspend\", () => Effect.succeed(v.any())),\n Match.tag(\n \"UniqueSymbol\",\n \"SymbolKeyword\",\n \"UndefinedKeyword\",\n \"VoidKeyword\",\n \"NeverKeyword\",\n \"Enums\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n \"Transformation\",\n () =>\n new UnsupportedSchemaTypeError({\n schemaType: ast._tag,\n }),\n ),\n Match.exhaustive,\n );\n\nconst handleUnion = (\n { types: [first, second, ...rest] }: SchemaAST.Union,\n isOptionalPropertyOfTypeLiteral: boolean,\n) =>\n Effect.gen(function* () {\n const validatorEffects = isOptionalPropertyOfTypeLiteral\n ? Array.filterMap([first, second, ...rest], (type) =>\n Predicate.not(SchemaAST.isUndefinedKeyword)(type)\n ? Option.some(compileAst(type))\n : Option.none(),\n )\n : Array.map([first, second, ...rest], (type) => compileAst(type));\n\n const [firstValidator, secondValidator, ...restValidators] =\n yield* Effect.all(validatorEffects);\n\n /* v8 ignore start */\n if (firstValidator === undefined) {\n return yield* Effect.dieMessage(\n \"First validator of union is undefined; this should be impossible.\",\n );\n /* v8 ignore stop */\n } else if (secondValidator === undefined) {\n return firstValidator;\n } else {\n return v.union(firstValidator, secondValidator, ...restValidators);\n }\n });\n\nconst handleTypeLiteral = (typeLiteralAst: SchemaAST.TypeLiteral) =>\n pipe(\n typeLiteralAst.indexSignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(handlePropertySignatures(typeLiteralAst), v.object),\n onSome: ({ parameter, type }) =>\n pipe(\n typeLiteralAst.propertySignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(\n Effect.all({\n parameter_: compileAst(parameter),\n type_: compileAst(type),\n }),\n ({ parameter_, type_ }) => v.record(parameter_, type_),\n ),\n onSome: () =>\n Effect.fail(\n new MixedIndexAndPropertySignaturesAreNotSupportedError(),\n ),\n }),\n ),\n }),\n );\n\nconst handleTupleType = ({ elements, rest }: SchemaAST.TupleType) =>\n Effect.gen(function* () {\n const restValidator = pipe(\n rest,\n Array.head,\n Option.map(({ type }) => compileAst(type)),\n Effect.flatten,\n );\n\n const [f, s, ...r] = elements;\n\n const elementToValidator = ({ type, isOptional }: SchemaAST.OptionalType) =>\n Effect.if(isOptional, {\n onTrue: () =>\n Effect.fail(new OptionalTupleElementsAreNotSupportedError()),\n onFalse: () => compileAst(type),\n });\n\n const arrayItemsValidator = yield* f === undefined\n ? pipe(\n restValidator,\n Effect.catchTag(\"NoSuchElementException\", () =>\n Effect.fail(new EmptyTupleIsNotSupportedError()),\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 = (typeLiteralAst: SchemaAST.TypeLiteral) =>\n pipe(\n typeLiteralAst.propertySignatures,\n Effect.forEach(({ type, name, isOptional }) => {\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);\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\nconst runSyncThrow = <A, E>(effect: Effect.Effect<A, E>) =>\n pipe(\n effect,\n Effect.runSyncExit,\n Exit.match({\n onSuccess: (validator) => validator,\n onFailure: (cause) => {\n throw Cause.squash(cause);\n },\n }),\n );\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 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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"}
@@ -0,0 +1,69 @@
1
+ import { Effect, Layer, Schema } from "effect";
2
+ import { StorageActionWriter as StorageActionWriter$1, StorageReader as StorageReader$1, StorageWriter as StorageWriter$1 } from "convex/server";
3
+ import { GenericId } from "convex/values";
4
+ import * as effect_Context0 from "effect/Context";
5
+ import * as effect_Cause0 from "effect/Cause";
6
+
7
+ //#region src/Storage.d.ts
8
+ declare namespace Storage_d_exports {
9
+ export { BlobNotFoundError, StorageActionWriter, StorageReader, StorageWriter };
10
+ }
11
+ declare const StorageReader_base: effect_Context0.TagClass<StorageReader, "@confect/server/Storage/StorageReader", {
12
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
13
+ }> & Effect.Tag.Proxy<StorageReader, {
14
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
15
+ }> & {
16
+ use: <X>(body: (_: {
17
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
18
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageReader> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageReader> : Effect.Effect<X, never, StorageReader>;
19
+ };
20
+ declare class StorageReader extends StorageReader_base {
21
+ static readonly layer: (storageReader: StorageReader$1) => Layer.Layer<StorageReader, never, never>;
22
+ }
23
+ declare const StorageWriter_base: effect_Context0.TagClass<StorageWriter, "@confect/server/Storage/StorageWriter", {
24
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
25
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
26
+ }> & Effect.Tag.Proxy<StorageWriter, {
27
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
28
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
29
+ }> & {
30
+ use: <X>(body: (_: {
31
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
32
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
33
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageWriter> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageWriter> : Effect.Effect<X, never, StorageWriter>;
34
+ };
35
+ declare class StorageWriter extends StorageWriter_base {
36
+ static readonly layer: (storageWriter: StorageWriter$1) => Layer.Layer<StorageWriter, never, never>;
37
+ }
38
+ declare const StorageActionWriter_base: effect_Context0.TagClass<StorageActionWriter, "@confect/server/Storage/StorageActionWriter", {
39
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
40
+ store: (blob: Blob, options?: {
41
+ sha256?: string;
42
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
43
+ }> & Effect.Tag.Proxy<StorageActionWriter, {
44
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
45
+ store: (blob: Blob, options?: {
46
+ sha256?: string;
47
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
48
+ }> & {
49
+ use: <X>(body: (_: {
50
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
51
+ store: (blob: Blob, options?: {
52
+ sha256?: string;
53
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
54
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageActionWriter> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageActionWriter> : Effect.Effect<X, never, StorageActionWriter>;
55
+ };
56
+ declare class StorageActionWriter extends StorageActionWriter_base {
57
+ static readonly layer: (storageActionWriter: StorageActionWriter$1) => Layer.Layer<StorageActionWriter, never, never>;
58
+ }
59
+ declare const BlobNotFoundError_base: Schema.TaggedErrorClass<BlobNotFoundError, "BlobNotFoundError", {
60
+ readonly _tag: Schema.tag<"BlobNotFoundError">;
61
+ } & {
62
+ id: typeof Schema.String;
63
+ }>;
64
+ declare class BlobNotFoundError extends BlobNotFoundError_base {
65
+ get message(): string;
66
+ }
67
+ //#endregion
68
+ export { BlobNotFoundError, StorageActionWriter, StorageReader, StorageWriter, Storage_d_exports };
69
+ //# sourceMappingURL=Storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Storage.d.ts","names":[],"sources":["../src/Storage.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;cAMmE,oBAGxB,eAAA,CAAA;sBAArB,0BAAqB,MAAA,CAAA,OAAA,KAAA;;sBAArB,0BAAqB,MAAA,CAAA,OAAA,KAAA;;;wBAArB,0BAAqB,MAAA,CAAA,OAAA,KAAA;;;cA+C9B,aAAA,SAAsB,kBAAA;yCAGO,oBAAmB,KAAA,CAAA,MAAA;AArDM;cAuDlE,oBA/B0C,eAAA,CAAA;EArBrB,iBAAA,EAAA,GAAA,gBAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;EAAqB,MAAA,EAAA,CAAA,SAAA,EAqBrB,SArBqB,CAAA,UAAA,CAAA,EAAA,GAqBA,MAAA,CAAA,MArBA,CAAA,IAAA,EAqBA,iBArBA,EAAA,KAAA,CAAA;CAAA,CAAA,mBAAA,cAAA,EAAA;EAAA,iBAAA,EAAA,GAAA,gBAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;EAAA,MAAA,EAAA,CAAA,SAAA,EAqBrB,SArBqB,CAAA,UAAA,CAAA,EAAA,GAqBA,MAAA,CAAA,MArBA,CAAA,IAAA,EAqBA,iBArBA,EAAA,KAAA,CAAA;;EAArB,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;IAAqB,iBAAA,EAAA,GAAA,gBAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;IAAA,MAAA,EAAA,CAAA,SAAA,EAqBrB,SArBqB,CAAA,UAAA,CAAA,EAAA,GAqBA,MAAA,CAAA,MArBA,CAAA,IAAA,EAqBA,iBArBA,EAAA,KAAA,CAAA;EAAA,CAAA,EAAA,IAAA,EAAA,GAAA,EAAA,CAAA,SAAA,cAAA,CAAA,KAAA,EAAA,EAAA,KAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,GAAA,gBAAA,CAAA,GAAA,EAAA,CAAA,SAAA,YAAA,CAAA,KAAA,IAAA,CAAA,CAAA,gBAAA,IAAA,+CAAA,CAAA,gBAAA,EAAA,EAAA,KAAA,eAAA,CAAA;;AAArB,cAsDT,aAAA,SAAsB,kBAAA,CAtDb;EAAqB,gBAAA,KAAA,EAAA,CAAA,aAAA,EAyDD,eAzDC,EAAA,GAyDkB,KAAA,CAAA,KAzDlB,CAyDkB,aAzDlB,EAAA,KAAA,EAAA,KAAA,CAAA;;cA2D1C,wBA3D0C,EA2CQ,eAAA,CAAA,QA3CR,oBAAA,EAAA,6CAAA,EAAA;mBA+BxB,0BAAqB,MAAA,CAAA,OAAA,MAAA;gBAYxB;;QAAmC,MAAA,CAAA,OAAA;;mBAZhC,0BAAqB,MAAA,CAAA,OAAA,MAAA;gBAYxB;;QAAmC,MAAA,CAAA,OAAA;;;qBAZhC,0BAAqB,MAAA,CAAA,OAAA,MAAA;kBAYxB;;UAAmC,MAAA,CAAA,OAAA;;;cAkBtC,mBAAA,SAA4B,wBAAA;EAd5B,gBAAc,KAAA,EAAA,CAAA,mBAAA,EAiBqB,qBAjBrB,EAAA,GAiB8C,KAAA,CAAA,KAjB9C,CAiB8C,mBAjB9C,EAAA,KAAA,EAAA,KAAA,CAAA;;cAmB1B,sBAhB4D,yBAAA,kBAAA,EAAA,mBAAA,EAAA;EAAA,SAAA,IAAA,YAAA,CAAA,mBAAA,CAAA;CAH1B,GAAA;EAEqB,EAAA,EAAA,oBAAA;AAGvD,CAAA,CAAA;cAgBY,iBAAA,SAA0B,sBAAA"}
@@ -0,0 +1,46 @@
1
+ import { __export } from "./_virtual/rolldown_runtime.js";
2
+ import { Effect, Layer, Option, Schema, flow, pipe } from "effect";
3
+
4
+ //#region src/Storage.ts
5
+ var Storage_exports = /* @__PURE__ */ __export({
6
+ BlobNotFoundError: () => BlobNotFoundError,
7
+ StorageActionWriter: () => StorageActionWriter,
8
+ StorageReader: () => StorageReader,
9
+ StorageWriter: () => StorageWriter
10
+ });
11
+ const makeStorageReader = (storageReader) => ({ getUrl: (storageId) => Effect.promise(() => storageReader.getUrl(storageId)).pipe(Effect.andThen(flow(Option.fromNullable, Option.match({
12
+ onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),
13
+ onSome: (doc) => pipe(doc, Schema.decode(Schema.URL), Effect.orDie)
14
+ })))) });
15
+ const makeStorageWriter = (storageWriter) => ({
16
+ generateUploadUrl: () => Effect.promise(() => storageWriter.generateUploadUrl()).pipe(Effect.andThen((url) => pipe(url, Schema.decode(Schema.URL), Effect.orDie))),
17
+ delete: (storageId) => Effect.tryPromise({
18
+ try: () => storageWriter.delete(storageId),
19
+ catch: () => new BlobNotFoundError({ id: storageId })
20
+ })
21
+ });
22
+ const makeStorageActionWriter = (storageActionWriter) => ({
23
+ get: (storageId) => Effect.promise(() => storageActionWriter.get(storageId)).pipe(Effect.andThen(flow(Option.fromNullable, Option.match({
24
+ onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),
25
+ onSome: Effect.succeed
26
+ })))),
27
+ store: (blob, options) => Effect.promise(() => storageActionWriter.store(blob, options))
28
+ });
29
+ var StorageReader = class extends Effect.Tag("@confect/server/Storage/StorageReader")() {
30
+ static layer = (storageReader) => Layer.succeed(this, makeStorageReader(storageReader));
31
+ };
32
+ var StorageWriter = class extends Effect.Tag("@confect/server/Storage/StorageWriter")() {
33
+ static layer = (storageWriter) => Layer.succeed(this, makeStorageWriter(storageWriter));
34
+ };
35
+ var StorageActionWriter = class extends Effect.Tag("@confect/server/Storage/StorageActionWriter")() {
36
+ static layer = (storageActionWriter) => Layer.succeed(this, makeStorageActionWriter(storageActionWriter));
37
+ };
38
+ var BlobNotFoundError = class extends Schema.TaggedError("BlobNotFoundError")("BlobNotFoundError", { id: Schema.String }) {
39
+ get message() {
40
+ return `File with ID '${this.id}' not found`;
41
+ }
42
+ };
43
+
44
+ //#endregion
45
+ export { BlobNotFoundError, StorageActionWriter, StorageReader, StorageWriter, Storage_exports };
46
+ //# sourceMappingURL=Storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Storage.js","names":[],"sources":["../src/Storage.ts"],"sourcesContent":["import type {\n StorageActionWriter as ConvexStorageActionWriter,\n StorageReader as ConvexStorageReader,\n StorageWriter as ConvexStorageWriter,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Effect, flow, Layer, Option, pipe, Schema } from \"effect\";\n\nconst makeStorageReader = (storageReader: ConvexStorageReader) => ({\n getUrl: (storageId: GenericId<\"_storage\">) =>\n Effect.promise(() => storageReader.getUrl(storageId)).pipe(\n Effect.andThen(\n flow(\n Option.fromNullable,\n Option.match({\n onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),\n onSome: (doc) => pipe(doc, Schema.decode(Schema.URL), Effect.orDie),\n }),\n ),\n ),\n ),\n});\n\nconst makeStorageWriter = (storageWriter: ConvexStorageWriter) => ({\n generateUploadUrl: () =>\n Effect.promise(() => storageWriter.generateUploadUrl()).pipe(\n Effect.andThen((url) =>\n pipe(url, Schema.decode(Schema.URL), Effect.orDie),\n ),\n ),\n delete: (storageId: GenericId<\"_storage\">) =>\n Effect.tryPromise({\n try: () => storageWriter.delete(storageId),\n catch: () => new BlobNotFoundError({ id: storageId }),\n }),\n});\n\nconst makeStorageActionWriter = (\n storageActionWriter: ConvexStorageActionWriter,\n) => ({\n get: (storageId: GenericId<\"_storage\">) =>\n Effect.promise(() => storageActionWriter.get(storageId)).pipe(\n Effect.andThen(\n flow(\n Option.fromNullable,\n Option.match({\n onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),\n onSome: Effect.succeed,\n }),\n ),\n ),\n ),\n store: (blob: Blob, options?: { sha256?: string }) =>\n Effect.promise(() => storageActionWriter.store(blob, options)),\n});\n\nexport class StorageReader extends Effect.Tag(\n \"@confect/server/Storage/StorageReader\",\n)<StorageReader, ReturnType<typeof makeStorageReader>>() {\n static readonly layer = (storageReader: ConvexStorageReader) =>\n Layer.succeed(this, makeStorageReader(storageReader));\n}\n\nexport class StorageWriter extends Effect.Tag(\n \"@confect/server/Storage/StorageWriter\",\n)<StorageWriter, ReturnType<typeof makeStorageWriter>>() {\n static readonly layer = (storageWriter: ConvexStorageWriter) =>\n Layer.succeed(this, makeStorageWriter(storageWriter));\n}\n\nexport class StorageActionWriter extends Effect.Tag(\n \"@confect/server/Storage/StorageActionWriter\",\n)<StorageActionWriter, ReturnType<typeof makeStorageActionWriter>>() {\n static readonly layer = (storageActionWriter: ConvexStorageActionWriter) =>\n Layer.succeed(this, makeStorageActionWriter(storageActionWriter));\n}\n\nexport class BlobNotFoundError extends Schema.TaggedError<BlobNotFoundError>(\n \"BlobNotFoundError\",\n)(\"BlobNotFoundError\", {\n id: Schema.String,\n}) {\n override get message(): string {\n return `File with ID '${this.id}' not found`;\n }\n}\n"],"mappings":";;;;;;;;;;AAQA,MAAM,qBAAqB,mBAAwC,EACjE,SAAS,cACP,OAAO,cAAc,cAAc,OAAO,UAAU,CAAC,CAAC,KACpD,OAAO,QACL,KACE,OAAO,cACP,OAAO,MAAM;CACX,cAAc,OAAO,KAAK,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC,CAAC;CACnE,SAAS,QAAQ,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,EAAE,OAAO,MAAM;CACpE,CAAC,CACH,CACF,CACF,EACJ;AAED,MAAM,qBAAqB,mBAAwC;CACjE,yBACE,OAAO,cAAc,cAAc,mBAAmB,CAAC,CAAC,KACtD,OAAO,SAAS,QACd,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,EAAE,OAAO,MAAM,CACnD,CACF;CACH,SAAS,cACP,OAAO,WAAW;EAChB,WAAW,cAAc,OAAO,UAAU;EAC1C,aAAa,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC;EACtD,CAAC;CACL;AAED,MAAM,2BACJ,yBACI;CACJ,MAAM,cACJ,OAAO,cAAc,oBAAoB,IAAI,UAAU,CAAC,CAAC,KACvD,OAAO,QACL,KACE,OAAO,cACP,OAAO,MAAM;EACX,cAAc,OAAO,KAAK,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC,CAAC;EACnE,QAAQ,OAAO;EAChB,CAAC,CACH,CACF,CACF;CACH,QAAQ,MAAY,YAClB,OAAO,cAAc,oBAAoB,MAAM,MAAM,QAAQ,CAAC;CACjE;AAED,IAAa,gBAAb,cAAmC,OAAO,IACxC,wCACD,EAAuD,CAAC;CACvD,OAAgB,SAAS,kBACvB,MAAM,QAAQ,MAAM,kBAAkB,cAAc,CAAC;;AAGzD,IAAa,gBAAb,cAAmC,OAAO,IACxC,wCACD,EAAuD,CAAC;CACvD,OAAgB,SAAS,kBACvB,MAAM,QAAQ,MAAM,kBAAkB,cAAc,CAAC;;AAGzD,IAAa,sBAAb,cAAyC,OAAO,IAC9C,8CACD,EAAmE,CAAC;CACnE,OAAgB,SAAS,wBACvB,MAAM,QAAQ,MAAM,wBAAwB,oBAAoB,CAAC;;AAGrE,IAAa,oBAAb,cAAuC,OAAO,YAC5C,oBACD,CAAC,qBAAqB,EACrB,IAAI,OAAO,QACZ,CAAC,CAAC;CACD,IAAa,UAAkB;AAC7B,SAAO,iBAAiB,KAAK,GAAG"}
@@ -0,0 +1,247 @@
1
+ import { TableSchemaToTableValidator } from "./SchemaToValidator.js";
2
+ import { Schema } from "effect";
3
+ import { Expand, GenericTableIndexes, GenericTableSearchIndexes, GenericTableVectorIndexes, IndexTiebreakerField, SearchIndexConfig, SystemFields, TableDefinition, VectorIndexConfig } from "convex/server";
4
+ import * as SystemFields$1 from "@confect/core/SystemFields";
5
+ import * as convex_values16 from "convex/values";
6
+ import { GenericValidator, Validator } from "convex/values";
7
+
8
+ //#region src/Table.d.ts
9
+ declare namespace Table_d_exports {
10
+ export { Any, AnyWithProps, Doc, Fields, Indexes, Name, SearchIndexes, SystemTables, Table, TableSchema, TableValidator, TablesRecord, TypeId, VectorIndexes, WithName, isTable, make, scheduledFunctionsTable, storageTable, systemTables };
11
+ }
12
+ declare const TypeId = "@confect/server/Table";
13
+ type TypeId = typeof TypeId;
14
+ declare const isTable: (u: unknown) => u is Any;
15
+ interface Table<Name_ extends string, TableSchema_$1 extends Schema.Schema.AnyNoContext, TableValidator_$1 extends GenericValidator = TableSchemaToTableValidator<TableSchema_$1>, Indexes_$1 extends GenericTableIndexes = {}, SearchIndexes_$1 extends GenericTableSearchIndexes = {}, VectorIndexes_$1 extends GenericTableVectorIndexes = {}> {
16
+ readonly [TypeId]: TypeId;
17
+ readonly tableDefinition: TableDefinition<TableValidator_$1, Indexes_$1, SearchIndexes_$1, VectorIndexes_$1>;
18
+ readonly name: Name_;
19
+ readonly Fields: TableSchema_$1;
20
+ readonly Doc: SystemFields$1.ExtendWithSystemFields<Name_, TableSchema_$1>;
21
+ readonly indexes: Indexes_$1;
22
+ index<IndexName extends string, FirstFieldPath extends ExtractFieldPaths<TableValidator_$1>, RestFieldPaths extends ExtractFieldPaths<TableValidator_$1>[]>(name: IndexName, fields: [FirstFieldPath, ...RestFieldPaths]): Table<Name_, TableSchema_$1, TableValidator_$1, Expand<Indexes_$1 & Record<IndexName, [FirstFieldPath, ...RestFieldPaths, IndexTiebreakerField]>>, SearchIndexes_$1, VectorIndexes_$1>;
23
+ searchIndex<IndexName extends string, SearchField extends ExtractFieldPaths<TableValidator_$1>, FilterFields extends ExtractFieldPaths<TableValidator_$1> = never>(name: IndexName, indexConfig: Expand<SearchIndexConfig<SearchField, FilterFields>>): Table<Name_, TableSchema_$1, TableValidator_$1, Indexes_$1, Expand<SearchIndexes_$1 & Record<IndexName, {
24
+ searchField: SearchField;
25
+ filterFields: FilterFields;
26
+ }>>, VectorIndexes_$1>;
27
+ vectorIndex<IndexName extends string, VectorField extends ExtractFieldPaths<TableValidator_$1>, FilterFields extends ExtractFieldPaths<TableValidator_$1> = never>(name: IndexName, indexConfig: Expand<VectorIndexConfig<VectorField, FilterFields>>): Table<Name_, TableSchema_$1, TableValidator_$1, Indexes_$1, SearchIndexes_$1, Expand<VectorIndexes_$1 & Record<IndexName, {
28
+ vectorField: VectorField;
29
+ dimensions: number;
30
+ filterFields: FilterFields;
31
+ }>>>;
32
+ }
33
+ interface Any {
34
+ readonly [TypeId]: TypeId;
35
+ }
36
+ type AnyWithProps = Table<any, Schema.Schema.AnyNoContext, GenericValidator, GenericTableIndexes, GenericTableSearchIndexes, GenericTableVectorIndexes>;
37
+ type Name<TableDef extends AnyWithProps> = TableDef extends Table<infer TableName, infer _TableSchema, infer _TableValidator, infer _Indexes, infer _SearchIndexes, infer _VectorIndexes> ? TableName & string : never;
38
+ type TableSchema<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer TableSchema_, infer _TableValidator, infer _Indexes, infer _SearchIndexes, infer _VectorIndexes> ? TableSchema_ : never;
39
+ type TableValidator<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer _TableSchema, infer TableValidator_, infer _Indexes, infer _SearchIndexes, infer _VectorIndexes> ? TableValidator_ : never;
40
+ type Indexes<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer _TableSchema, infer _TableValidator, infer Indexes_, infer _SearchIndexes, infer _VectorIndexes> ? Indexes_ : never;
41
+ type SearchIndexes<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer _TableSchema, infer _TableValidator, infer _Indexes, infer SearchIndexes_, infer _VectorIndexes> ? SearchIndexes_ : never;
42
+ type VectorIndexes<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer _TableSchema, infer _TableValidator, infer _Indexes, infer _SearchIndexes, infer VectorIndexes_> ? VectorIndexes_ : never;
43
+ type Doc<TableDef extends AnyWithProps> = TableDef extends Table<infer TableName, infer TableSchema_, infer _TableValidator, infer _Indexes, infer _SearchIndexes, infer _VectorIndexes> ? SystemFields$1.ExtendWithSystemFields<TableName, TableSchema_> : never;
44
+ type Fields<TableDef extends AnyWithProps> = TableDef extends Table<infer _TableName, infer TableSchema_, infer _TableValidator, infer _Indexes, infer _SearchIndexes, infer _VectorIndexes> ? TableSchema_ : never;
45
+ type WithName<TableDef extends AnyWithProps, Name_ extends string> = TableDef extends {
46
+ readonly name: Name_;
47
+ } ? TableDef : never;
48
+ type TablesRecord<Tables extends AnyWithProps> = { readonly [TableName_ in Name<Tables>]: WithName<Tables, TableName_> };
49
+ /**
50
+ * Create a table.
51
+ */
52
+ declare const make: <const Name_ extends string, TableSchema_$1 extends Schema.Schema.AnyNoContext, TableValidator_$1 extends GenericValidator = TableSchemaToTableValidator<TableSchema_$1>, Indexes_$1 extends GenericTableIndexes = {}, SearchIndexes_$1 extends GenericTableSearchIndexes = {}, VectorIndexes_$1 extends GenericTableVectorIndexes = {}>(name: Name_, fields: TableSchema_$1) => Table<Name_, TableSchema_$1, TableValidator_$1, Indexes_$1, SearchIndexes_$1, VectorIndexes_$1>;
53
+ declare const scheduledFunctionsTable: Table<"_scheduled_functions", Schema.Struct<{
54
+ name: typeof Schema.String;
55
+ args: Schema.Array$<typeof Schema.Any>;
56
+ scheduledTime: typeof Schema.Number;
57
+ completedTime: Schema.optionalWith<typeof Schema.Number, {
58
+ exact: true;
59
+ }>;
60
+ state: Schema.Union<[Schema.Struct<{
61
+ kind: Schema.Literal<["pending"]>;
62
+ }>, Schema.Struct<{
63
+ kind: Schema.Literal<["inProgress"]>;
64
+ }>, Schema.Struct<{
65
+ kind: Schema.Literal<["success"]>;
66
+ }>, Schema.Struct<{
67
+ kind: Schema.Literal<["failed"]>;
68
+ error: typeof Schema.String;
69
+ }>, Schema.Struct<{
70
+ kind: Schema.Literal<["canceled"]>;
71
+ }>]>;
72
+ }>, convex_values16.VObject<{
73
+ name: string;
74
+ args: any[];
75
+ scheduledTime: number;
76
+ state: {
77
+ kind: "pending";
78
+ } | {
79
+ kind: "inProgress";
80
+ } | {
81
+ kind: "success";
82
+ } | {
83
+ kind: "failed";
84
+ error: string;
85
+ } | {
86
+ kind: "canceled";
87
+ };
88
+ completedTime?: number;
89
+ }, {
90
+ name: convex_values16.VString<string, "required">;
91
+ args: convex_values16.VArray<any[], convex_values16.VAny<any, "required", string>, "required">;
92
+ scheduledTime: convex_values16.VFloat64<number, "required">;
93
+ state: convex_values16.VUnion<{
94
+ kind: "pending";
95
+ } | {
96
+ kind: "inProgress";
97
+ } | {
98
+ kind: "success";
99
+ } | {
100
+ kind: "failed";
101
+ error: string;
102
+ } | {
103
+ kind: "canceled";
104
+ }, [convex_values16.VObject<{
105
+ kind: "pending";
106
+ }, {
107
+ kind: convex_values16.VLiteral<"pending", "required">;
108
+ }, "required", "kind">, convex_values16.VObject<{
109
+ kind: "inProgress";
110
+ }, {
111
+ kind: convex_values16.VLiteral<"inProgress", "required">;
112
+ }, "required", "kind">, convex_values16.VObject<{
113
+ kind: "success";
114
+ }, {
115
+ kind: convex_values16.VLiteral<"success", "required">;
116
+ }, "required", "kind">, convex_values16.VObject<{
117
+ kind: "failed";
118
+ error: string;
119
+ }, {
120
+ kind: convex_values16.VLiteral<"failed", "required">;
121
+ error: convex_values16.VString<string, "required">;
122
+ }, "required", "kind" | "error">, convex_values16.VObject<{
123
+ kind: "canceled";
124
+ }, {
125
+ kind: convex_values16.VLiteral<"canceled", "required">;
126
+ }, "required", "kind">], "required", "kind" | "error">;
127
+ completedTime: convex_values16.VFloat64<number | undefined, "optional">;
128
+ }, "required", "name" | "args" | "scheduledTime" | "completedTime" | "state" | "state.kind" | "state.error">, {}, {}, {}>;
129
+ declare const storageTable: Table<"_storage", Schema.Struct<{
130
+ sha256: typeof Schema.String;
131
+ size: typeof Schema.Number;
132
+ contentType: Schema.optionalWith<typeof Schema.String, {
133
+ exact: true;
134
+ }>;
135
+ }>, convex_values16.VObject<{
136
+ sha256: string;
137
+ size: number;
138
+ contentType?: string;
139
+ }, {
140
+ sha256: convex_values16.VString<string, "required">;
141
+ size: convex_values16.VFloat64<number, "required">;
142
+ contentType: convex_values16.VString<string | undefined, "optional">;
143
+ }, "required", "sha256" | "size" | "contentType">, {}, {}, {}>;
144
+ declare const systemTables: {
145
+ readonly _scheduled_functions: Table<"_scheduled_functions", Schema.Struct<{
146
+ name: typeof Schema.String;
147
+ args: Schema.Array$<typeof Schema.Any>;
148
+ scheduledTime: typeof Schema.Number;
149
+ completedTime: Schema.optionalWith<typeof Schema.Number, {
150
+ exact: true;
151
+ }>;
152
+ state: Schema.Union<[Schema.Struct<{
153
+ kind: Schema.Literal<["pending"]>;
154
+ }>, Schema.Struct<{
155
+ kind: Schema.Literal<["inProgress"]>;
156
+ }>, Schema.Struct<{
157
+ kind: Schema.Literal<["success"]>;
158
+ }>, Schema.Struct<{
159
+ kind: Schema.Literal<["failed"]>;
160
+ error: typeof Schema.String;
161
+ }>, Schema.Struct<{
162
+ kind: Schema.Literal<["canceled"]>;
163
+ }>]>;
164
+ }>, convex_values16.VObject<{
165
+ name: string;
166
+ args: any[];
167
+ scheduledTime: number;
168
+ state: {
169
+ kind: "pending";
170
+ } | {
171
+ kind: "inProgress";
172
+ } | {
173
+ kind: "success";
174
+ } | {
175
+ kind: "failed";
176
+ error: string;
177
+ } | {
178
+ kind: "canceled";
179
+ };
180
+ completedTime?: number;
181
+ }, {
182
+ name: convex_values16.VString<string, "required">;
183
+ args: convex_values16.VArray<any[], convex_values16.VAny<any, "required", string>, "required">;
184
+ scheduledTime: convex_values16.VFloat64<number, "required">;
185
+ state: convex_values16.VUnion<{
186
+ kind: "pending";
187
+ } | {
188
+ kind: "inProgress";
189
+ } | {
190
+ kind: "success";
191
+ } | {
192
+ kind: "failed";
193
+ error: string;
194
+ } | {
195
+ kind: "canceled";
196
+ }, [convex_values16.VObject<{
197
+ kind: "pending";
198
+ }, {
199
+ kind: convex_values16.VLiteral<"pending", "required">;
200
+ }, "required", "kind">, convex_values16.VObject<{
201
+ kind: "inProgress";
202
+ }, {
203
+ kind: convex_values16.VLiteral<"inProgress", "required">;
204
+ }, "required", "kind">, convex_values16.VObject<{
205
+ kind: "success";
206
+ }, {
207
+ kind: convex_values16.VLiteral<"success", "required">;
208
+ }, "required", "kind">, convex_values16.VObject<{
209
+ kind: "failed";
210
+ error: string;
211
+ }, {
212
+ kind: convex_values16.VLiteral<"failed", "required">;
213
+ error: convex_values16.VString<string, "required">;
214
+ }, "required", "kind" | "error">, convex_values16.VObject<{
215
+ kind: "canceled";
216
+ }, {
217
+ kind: convex_values16.VLiteral<"canceled", "required">;
218
+ }, "required", "kind">], "required", "kind" | "error">;
219
+ completedTime: convex_values16.VFloat64<number | undefined, "optional">;
220
+ }, "required", "name" | "args" | "scheduledTime" | "completedTime" | "state" | "state.kind" | "state.error">, {}, {}, {}>;
221
+ readonly _storage: Table<"_storage", Schema.Struct<{
222
+ sha256: typeof Schema.String;
223
+ size: typeof Schema.Number;
224
+ contentType: Schema.optionalWith<typeof Schema.String, {
225
+ exact: true;
226
+ }>;
227
+ }>, convex_values16.VObject<{
228
+ sha256: string;
229
+ size: number;
230
+ contentType?: string;
231
+ }, {
232
+ sha256: convex_values16.VString<string, "required">;
233
+ size: convex_values16.VFloat64<number, "required">;
234
+ contentType: convex_values16.VString<string | undefined, "optional">;
235
+ }, "required", "sha256" | "size" | "contentType">, {}, {}, {}>;
236
+ };
237
+ type SystemTables = typeof scheduledFunctionsTable | typeof storageTable;
238
+ /**
239
+ * Extract all of the index field paths within a {@link Validator}.
240
+ *
241
+ * This is used within {@link defineTable}.
242
+ * @public
243
+ */
244
+ type ExtractFieldPaths<T extends Validator<any, any, any>> = T["fieldPaths"] | keyof SystemFields;
245
+ //#endregion
246
+ export { Any, AnyWithProps, Doc, Fields, Indexes, Name, SearchIndexes, SystemTables, Table, TableSchema, TableValidator, Table_d_exports, TablesRecord, TypeId, VectorIndexes, WithName, isTable, make, scheduledFunctionsTable, storageTable, systemTables };
247
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","names":[],"sources":["../src/Table.ts"],"sourcesContent":[],"mappings":"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"}