effect-qb 0.13.0 → 0.15.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 (146) hide show
  1. package/README.md +6 -1431
  2. package/dist/mysql.js +61945 -3611
  3. package/dist/postgres/metadata.js +2818 -0
  4. package/dist/postgres.js +9942 -5591
  5. package/package.json +21 -10
  6. package/src/internal/aggregation-validation.ts +3 -3
  7. package/src/internal/case-analysis.d.ts +18 -0
  8. package/src/internal/case-analysis.ts +4 -4
  9. package/src/internal/coercion/analysis.d.ts +7 -0
  10. package/src/internal/{coercion-analysis.ts → coercion/analysis.ts} +3 -3
  11. package/src/internal/coercion/errors.d.ts +17 -0
  12. package/src/internal/{coercion-errors.ts → coercion/errors.ts} +1 -1
  13. package/src/internal/coercion/kind.d.ts +4 -0
  14. package/src/internal/{coercion-kind.ts → coercion/kind.ts} +2 -2
  15. package/src/internal/{coercion-normalize.ts → coercion/normalize.ts} +1 -1
  16. package/src/internal/coercion/rules.d.ts +6 -0
  17. package/src/internal/{coercion-rules.ts → coercion/rules.ts} +2 -2
  18. package/src/internal/column-state.d.ts +190 -0
  19. package/src/internal/column-state.ts +119 -56
  20. package/src/internal/column.ts +387 -149
  21. package/src/internal/datatypes/define.d.ts +17 -0
  22. package/src/internal/datatypes/define.ts +18 -34
  23. package/src/internal/datatypes/lookup.d.ts +44 -0
  24. package/src/internal/datatypes/lookup.ts +61 -152
  25. package/src/internal/datatypes/shape.d.ts +16 -0
  26. package/src/internal/datatypes/shape.ts +1 -1
  27. package/src/internal/derived-table.d.ts +4 -0
  28. package/src/internal/derived-table.ts +21 -16
  29. package/src/internal/dsl-mutation-runtime.ts +378 -0
  30. package/src/internal/dsl-plan-runtime.ts +387 -0
  31. package/src/internal/dsl-query-runtime.ts +160 -0
  32. package/src/internal/dsl-transaction-ddl-runtime.ts +263 -0
  33. package/src/internal/executor.ts +173 -38
  34. package/src/internal/expression-ast.ts +19 -5
  35. package/src/internal/grouping-key.d.ts +3 -0
  36. package/src/internal/grouping-key.ts +1 -1
  37. package/src/internal/implication-runtime.d.ts +15 -0
  38. package/src/internal/implication-runtime.ts +171 -0
  39. package/src/internal/json/ast.d.ts +30 -0
  40. package/src/internal/json/ast.ts +1 -1
  41. package/src/internal/json/errors.d.ts +8 -0
  42. package/src/internal/json/path.d.ts +75 -0
  43. package/src/internal/json/path.ts +1 -1
  44. package/src/internal/json/types.d.ts +62 -0
  45. package/src/internal/predicate/analysis.d.ts +20 -0
  46. package/src/internal/{predicate-analysis.ts → predicate/analysis.ts} +13 -3
  47. package/src/internal/predicate/atom.d.ts +28 -0
  48. package/src/internal/{predicate-branches.ts → predicate/branches.ts} +2 -2
  49. package/src/internal/predicate/context.d.ts +67 -0
  50. package/src/internal/{predicate-context.ts → predicate/context.ts} +111 -32
  51. package/src/internal/predicate/formula.d.ts +35 -0
  52. package/src/internal/{predicate-formula.ts → predicate/formula.ts} +32 -20
  53. package/src/internal/predicate/key.d.ts +11 -0
  54. package/src/internal/{predicate-key.ts → predicate/key.ts} +2 -2
  55. package/src/internal/{predicate-nnf.ts → predicate/nnf.ts} +2 -2
  56. package/src/internal/predicate/normalize.d.ts +53 -0
  57. package/src/internal/predicate/normalize.ts +273 -0
  58. package/src/internal/predicate/runtime.d.ts +31 -0
  59. package/src/internal/predicate/runtime.ts +679 -0
  60. package/src/internal/projection-alias.d.ts +13 -0
  61. package/src/internal/projections.d.ts +31 -0
  62. package/src/internal/projections.ts +1 -1
  63. package/src/internal/query-ast.d.ts +217 -0
  64. package/src/internal/query-ast.ts +1 -1
  65. package/src/internal/query-requirements.d.ts +20 -0
  66. package/src/internal/query.d.ts +775 -0
  67. package/src/internal/query.ts +767 -275
  68. package/src/internal/renderer.ts +7 -21
  69. package/src/internal/row-set.d.ts +53 -0
  70. package/src/internal/{plan.ts → row-set.ts} +23 -11
  71. package/src/internal/{runtime-normalize.ts → runtime/normalize.ts} +9 -31
  72. package/src/internal/{runtime-schema.ts → runtime/schema.ts} +84 -55
  73. package/src/internal/runtime/value.d.ts +22 -0
  74. package/src/internal/{runtime-value.ts → runtime/value.ts} +2 -2
  75. package/src/internal/scalar.d.ts +107 -0
  76. package/src/internal/scalar.ts +191 -0
  77. package/src/internal/schema-derivation.d.ts +105 -0
  78. package/src/internal/schema-derivation.ts +93 -21
  79. package/src/internal/schema-expression.d.ts +18 -0
  80. package/src/internal/schema-expression.ts +75 -0
  81. package/src/internal/table-options.d.ts +94 -0
  82. package/src/internal/table-options.ts +94 -8
  83. package/src/internal/table.d.ts +173 -0
  84. package/src/internal/table.ts +135 -54
  85. package/src/mysql/column.ts +95 -18
  86. package/src/mysql/datatypes/index.ts +58 -3
  87. package/src/mysql/errors/generated.ts +57336 -0
  88. package/src/mysql/errors/index.ts +1 -0
  89. package/src/mysql/errors/normalize.ts +55 -53
  90. package/src/mysql/errors/types.ts +74 -0
  91. package/src/mysql/executor.ts +69 -7
  92. package/src/mysql/function/aggregate.ts +1 -5
  93. package/src/mysql/function/core.ts +1 -3
  94. package/src/mysql/function/index.ts +1 -1
  95. package/src/mysql/function/string.ts +1 -5
  96. package/src/mysql/function/temporal.ts +12 -15
  97. package/src/mysql/function/window.ts +1 -6
  98. package/src/{internal/mysql-dialect.ts → mysql/internal/dialect.ts} +1 -1
  99. package/src/mysql/internal/dsl.ts +6115 -0
  100. package/src/{internal/mysql-renderer.ts → mysql/internal/renderer.ts} +6 -6
  101. package/src/mysql/internal/sql-expression-renderer.ts +1455 -0
  102. package/src/mysql/json.ts +2 -0
  103. package/src/mysql/query.ts +111 -86
  104. package/src/mysql/renderer.ts +1 -1
  105. package/src/mysql/table.ts +1 -1
  106. package/src/mysql.ts +6 -4
  107. package/src/postgres/cast.ts +30 -0
  108. package/src/postgres/column.ts +178 -20
  109. package/src/postgres/datatypes/index.d.ts +515 -0
  110. package/src/postgres/datatypes/index.ts +49 -5
  111. package/src/postgres/datatypes/spec.d.ts +412 -0
  112. package/src/postgres/errors/generated.ts +2636 -0
  113. package/src/postgres/errors/index.ts +1 -0
  114. package/src/postgres/errors/normalize.ts +47 -62
  115. package/src/postgres/errors/types.ts +92 -34
  116. package/src/postgres/executor.ts +37 -5
  117. package/src/postgres/function/aggregate.ts +1 -5
  118. package/src/postgres/function/core.ts +20 -2
  119. package/src/postgres/function/index.ts +1 -1
  120. package/src/postgres/function/string.ts +1 -5
  121. package/src/postgres/function/temporal.ts +12 -15
  122. package/src/postgres/function/window.ts +1 -6
  123. package/src/{internal/postgres-dialect.ts → postgres/internal/dialect.ts} +1 -1
  124. package/src/{internal/query-factory.ts → postgres/internal/dsl.ts} +1568 -2120
  125. package/src/{internal/postgres-renderer.ts → postgres/internal/renderer.ts} +6 -6
  126. package/src/postgres/internal/schema-ddl.ts +108 -0
  127. package/src/postgres/internal/schema-model.ts +150 -0
  128. package/src/{internal → postgres/internal}/sql-expression-renderer.ts +112 -46
  129. package/src/postgres/json.ts +493 -0
  130. package/src/postgres/metadata.ts +31 -0
  131. package/src/postgres/query.ts +113 -86
  132. package/src/postgres/renderer.ts +3 -13
  133. package/src/postgres/schema-expression.ts +17 -0
  134. package/src/postgres/schema-management.ts +204 -0
  135. package/src/postgres/schema.ts +35 -0
  136. package/src/postgres/table.ts +316 -42
  137. package/src/postgres/type.ts +31 -0
  138. package/src/postgres.ts +20 -4
  139. package/CHANGELOG.md +0 -134
  140. package/src/internal/expression.ts +0 -327
  141. package/src/internal/predicate-normalize.ts +0 -202
  142. package/src/mysql/function/json.ts +0 -4
  143. package/src/mysql/private/query.ts +0 -13
  144. package/src/postgres/function/json.ts +0 -4
  145. package/src/postgres/private/query.ts +0 -13
  146. /package/src/internal/{predicate-atom.ts → predicate/atom.ts} +0 -0
@@ -0,0 +1,273 @@
1
+ import type * as Expression from "../scalar.js"
2
+ import type * as ExpressionAst from "../expression-ast.js"
3
+ import type { ColumnKeyOfExpression, ValueKey } from "./key.js"
4
+ import type { AllFormula, AnyFormula, AtomFormula, FalseFormula, NotFormula, PredicateFormula, TrueFormula } from "./formula.js"
5
+ import type { EqColumnAtom, EqLiteralAtom, NeqLiteralAtom, NonNullAtom, NullAtom, UnknownAtom } from "./atom.js"
6
+
7
+ type AstOf<Value extends Expression.Any> = Value extends {
8
+ readonly [ExpressionAst.TypeId]: infer Ast extends ExpressionAst.Any
9
+ } ? Ast : never
10
+
11
+ type LiteralValueOfExpression<Value extends Expression.Any> = AstOf<Value> extends ExpressionAst.LiteralNode<infer Literal>
12
+ ? Literal
13
+ : never
14
+
15
+ type True = TrueFormula
16
+ type False = FalseFormula
17
+
18
+ type UnknownTag<Tag extends string> = AtomFormula<UnknownAtom<Tag>>
19
+ type AtomOf<Atom extends import("./atom.js").PredicateAtom> = AtomFormula<Atom>
20
+ type FactOf<Atom extends import("./atom.js").PredicateAtom> = AtomFormula<Atom>
21
+
22
+ type NonNullFactsOfExpression<Value extends Expression.Any> =
23
+ [ColumnKeyOfExpression<Value>] extends [never]
24
+ ? never
25
+ : FactOf<NonNullAtom<ColumnKeyOfExpression<Value>>>
26
+
27
+ type CombineFacts<
28
+ Left extends PredicateFormula,
29
+ Right extends PredicateFormula
30
+ > = [Left] extends [never]
31
+ ? Right
32
+ : [Right] extends [never]
33
+ ? Left
34
+ : import("./formula.js").NormalizeBooleanConstants<AllFormula<[Left, Right]>>
35
+
36
+ type FactsOfExpressions<Values extends readonly Expression.Any[]> =
37
+ Values extends readonly [
38
+ infer Head extends Expression.Any,
39
+ ...infer Tail extends readonly Expression.Any[]
40
+ ]
41
+ ? CombineFacts<FormulaOfExpression<Head>, FactsOfExpressions<Tail>>
42
+ : never
43
+
44
+ type FormulaOfEq<
45
+ Left extends Expression.Any,
46
+ Right extends Expression.Any
47
+ > =
48
+ [ColumnKeyOfExpression<Left>] extends [never]
49
+ ? [ColumnKeyOfExpression<Right>] extends [never]
50
+ ? LiteralValueOfExpression<Left> extends infer LeftLiteral
51
+ ? LiteralValueOfExpression<Right> extends infer RightLiteral
52
+ ? [LeftLiteral] extends [never]
53
+ ? UnknownTag<"eq:unsupported">
54
+ : [RightLiteral] extends [never]
55
+ ? UnknownTag<"eq:unsupported">
56
+ : LeftLiteral extends null
57
+ ? False
58
+ : RightLiteral extends null
59
+ ? False
60
+ : [LeftLiteral] extends [RightLiteral]
61
+ ? True
62
+ : False
63
+ : UnknownTag<"eq:unsupported">
64
+ : UnknownTag<"eq:unsupported">
65
+ : LiteralValueOfExpression<Left> extends infer LeftLiteral
66
+ ? [LeftLiteral] extends [never]
67
+ ? UnknownTag<"eq:unsupported">
68
+ : LeftLiteral extends null
69
+ ? False
70
+ : AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
71
+ : UnknownTag<"eq:unsupported">
72
+ : [ColumnKeyOfExpression<Right>] extends [never]
73
+ ? LiteralValueOfExpression<Right> extends infer RightLiteral
74
+ ? [RightLiteral] extends [never]
75
+ ? UnknownTag<"eq:unsupported">
76
+ : RightLiteral extends null
77
+ ? False
78
+ : AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
79
+ : UnknownTag<"eq:unsupported">
80
+ : AtomOf<import("./atom.js").EqColumnAtom<ColumnKeyOfExpression<Left>, ColumnKeyOfExpression<Right>>>
81
+
82
+ type FormulaOfNeq<
83
+ Left extends Expression.Any,
84
+ Right extends Expression.Any
85
+ > =
86
+ [ColumnKeyOfExpression<Left>] extends [never]
87
+ ? [ColumnKeyOfExpression<Right>] extends [never]
88
+ ? LiteralValueOfExpression<Left> extends infer LeftLiteral
89
+ ? LiteralValueOfExpression<Right> extends infer RightLiteral
90
+ ? [LeftLiteral] extends [never]
91
+ ? UnknownTag<"neq:unsupported">
92
+ : [RightLiteral] extends [never]
93
+ ? UnknownTag<"neq:unsupported">
94
+ : LeftLiteral extends null
95
+ ? False
96
+ : RightLiteral extends null
97
+ ? False
98
+ : [LeftLiteral] extends [RightLiteral]
99
+ ? False
100
+ : True
101
+ : UnknownTag<"neq:unsupported">
102
+ : UnknownTag<"neq:unsupported">
103
+ : LiteralValueOfExpression<Left> extends infer LeftLiteral
104
+ ? [LeftLiteral] extends [never]
105
+ ? UnknownTag<"neq:unsupported">
106
+ : LeftLiteral extends null
107
+ ? False
108
+ : AtomOf<NeqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
109
+ : UnknownTag<"neq:unsupported">
110
+ : [ColumnKeyOfExpression<Right>] extends [never]
111
+ ? LiteralValueOfExpression<Right> extends infer RightLiteral
112
+ ? [RightLiteral] extends [never]
113
+ ? UnknownTag<"neq:unsupported">
114
+ : RightLiteral extends null
115
+ ? False
116
+ : AtomOf<NeqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
117
+ : UnknownTag<"neq:unsupported">
118
+ : CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
119
+
120
+ type FormulaOfIsNotDistinctFrom<
121
+ Left extends Expression.Any,
122
+ Right extends Expression.Any
123
+ > =
124
+ LiteralValueOfExpression<Left> extends infer LeftLiteral
125
+ ? LiteralValueOfExpression<Right> extends infer RightLiteral
126
+ ? [LeftLiteral] extends [never]
127
+ ? [RightLiteral] extends [never]
128
+ ? UnknownTag<"isNotDistinctFrom:unsupported">
129
+ : RightLiteral extends null
130
+ ? [ColumnKeyOfExpression<Left>] extends [never]
131
+ ? UnknownTag<"isNotDistinctFrom:unsupported">
132
+ : AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
133
+ : UnknownTag<"isNotDistinctFrom:unsupported">
134
+ : LeftLiteral extends null
135
+ ? [ColumnKeyOfExpression<Right>] extends [never]
136
+ ? UnknownTag<"isNotDistinctFrom:unsupported">
137
+ : AtomOf<NullAtom<ColumnKeyOfExpression<Right>>>
138
+ : RightLiteral extends null
139
+ ? [ColumnKeyOfExpression<Left>] extends [never]
140
+ ? UnknownTag<"isNotDistinctFrom:unsupported">
141
+ : AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
142
+ : [ColumnKeyOfExpression<Left>] extends [never]
143
+ ? [ColumnKeyOfExpression<Right>] extends [never]
144
+ ? CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
145
+ : AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
146
+ : AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
147
+ : UnknownTag<"isNotDistinctFrom:unsupported">
148
+ : UnknownTag<"isNotDistinctFrom:unsupported">
149
+
150
+ type OrFormulas<
151
+ Items extends readonly PredicateFormula[]
152
+ > = import("./formula.js").NormalizeBooleanConstants<AnyFormula<Items>>
153
+
154
+ type AndFormulas<
155
+ Items extends readonly PredicateFormula[]
156
+ > = import("./formula.js").NormalizeBooleanConstants<AllFormula<Items>>
157
+
158
+ type FormulaTupleOf<
159
+ Values extends readonly Expression.Any[]
160
+ > = {
161
+ readonly [K in keyof Values]: Values[K] extends Expression.Any ? FormulaOfExpression<Values[K]> : never
162
+ } & readonly PredicateFormula[]
163
+
164
+ type AllFormulaOfValues<
165
+ Values extends readonly Expression.Any[]
166
+ > = import("./formula.js").NormalizeBooleanConstants<AllFormula<FormulaTupleOf<Values>>>
167
+
168
+ type AnyFormulaOfValues<
169
+ Values extends readonly Expression.Any[]
170
+ > = import("./formula.js").NormalizeBooleanConstants<AnyFormula<FormulaTupleOf<Values>>>
171
+
172
+ type FormulaOfInValues<
173
+ Left extends Expression.Any,
174
+ Values extends readonly Expression.Any[],
175
+ Current extends readonly PredicateFormula[] = []
176
+ > = Values extends readonly [
177
+ infer Head extends Expression.Any,
178
+ ...infer Tail extends readonly Expression.Any[]
179
+ ]
180
+ ? FormulaOfInValues<Left, Tail, [...Current, FormulaOfEq<Left, Head>]>
181
+ : Current
182
+
183
+ type FormulaOfNotInValues<
184
+ Left extends Expression.Any,
185
+ Values extends readonly Expression.Any[],
186
+ Current extends readonly PredicateFormula[] = []
187
+ > = Values extends readonly [
188
+ infer Head extends Expression.Any,
189
+ ...infer Tail extends readonly Expression.Any[]
190
+ ]
191
+ ? FormulaOfNotInValues<Left, Tail, [...Current, FormulaOfNeq<Left, Head>]>
192
+ : Current
193
+
194
+ type FormulaOfVariadic<
195
+ Kind extends ExpressionAst.VariadicKind,
196
+ Values extends readonly Expression.Any[]
197
+ > = Kind extends "and"
198
+ ? AllFormulaOfValues<Values>
199
+ : Kind extends "or"
200
+ ? AnyFormulaOfValues<Values>
201
+ : Kind extends "in"
202
+ ? Values extends readonly [infer Left extends Expression.Any, ...infer Tail extends readonly Expression.Any[]]
203
+ ? OrFormulas<FormulaOfInValues<Left, Tail>>
204
+ : False
205
+ : Kind extends "notIn"
206
+ ? Values extends readonly [infer Left extends Expression.Any, ...infer Tail extends readonly Expression.Any[]]
207
+ ? CombineFacts<NonNullFactsOfExpression<Left>, AndFormulas<FormulaOfNotInValues<Left, Tail>>>
208
+ : True
209
+ : Kind extends "between"
210
+ ? FactsOfExpressions<Values> extends infer Facts extends PredicateFormula
211
+ ? [Facts] extends [never]
212
+ ? UnknownTag<"variadic:between">
213
+ : CombineFacts<Facts, UnknownTag<"variadic:between">>
214
+ : UnknownTag<"variadic:between">
215
+ : UnknownTag<`variadic:${Kind}`>
216
+
217
+ type FormulaOfUnary<
218
+ Kind extends ExpressionAst.UnaryKind,
219
+ Inner extends Expression.Any
220
+ > = Kind extends "isNull"
221
+ ? [ColumnKeyOfExpression<Inner>] extends [never]
222
+ ? UnknownTag<"isNull:unsupported">
223
+ : AtomOf<NullAtom<ColumnKeyOfExpression<Inner>>>
224
+ : Kind extends "isNotNull"
225
+ ? [ColumnKeyOfExpression<Inner>] extends [never]
226
+ ? UnknownTag<"isNotNull:unsupported">
227
+ : AtomOf<NonNullAtom<ColumnKeyOfExpression<Inner>>>
228
+ : Kind extends "not"
229
+ ? import("./formula.js").Not<FormulaOfExpression<Inner>>
230
+ : UnknownTag<`unary:${Kind}`>
231
+
232
+ type FormulaOfBinary<
233
+ Kind extends ExpressionAst.BinaryKind,
234
+ Left extends Expression.Any,
235
+ Right extends Expression.Any
236
+ > = Kind extends "eq"
237
+ ? FormulaOfEq<Left, Right>
238
+ : Kind extends "neq"
239
+ ? FormulaOfNeq<Left, Right>
240
+ : Kind extends "lt" | "lte" | "gt" | "gte" | "like" | "ilike" | "contains" | "containedBy" | "overlaps"
241
+ ? CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
242
+ : Kind extends "isNotDistinctFrom"
243
+ ? FormulaOfIsNotDistinctFrom<Left, Right>
244
+ : Kind extends "isDistinctFrom"
245
+ ? import("./formula.js").Not<FormulaOfIsNotDistinctFrom<Left, Right>>
246
+ : CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
247
+
248
+ type FormulaOfAst<
249
+ Ast extends ExpressionAst.Any
250
+ > = [Ast] extends [ExpressionAst.LiteralNode<infer Literal>]
251
+ ? Literal extends true
252
+ ? True
253
+ : Literal extends false
254
+ ? False
255
+ : UnknownTag<"literal:non-boolean">
256
+ : [Ast] extends [ExpressionAst.UnaryNode<infer Kind extends ExpressionAst.UnaryKind, infer Inner extends Expression.Any>]
257
+ ? FormulaOfUnary<Kind, Inner>
258
+ : [Ast] extends [ExpressionAst.VariadicNode<infer Kind extends ExpressionAst.VariadicKind, infer Values extends readonly Expression.Any[]>]
259
+ ? FormulaOfVariadic<Kind, Values>
260
+ : [Ast] extends [ExpressionAst.BinaryNode<infer Kind extends ExpressionAst.BinaryKind, infer Left extends Expression.Any, infer Right extends Expression.Any>]
261
+ ? FormulaOfBinary<Kind, Left, Right>
262
+ : UnknownTag<`expr:${Ast["kind"]}`>
263
+
264
+ export type FormulaOfExpression<Value extends Expression.Any> =
265
+ [AstOf<Value>] extends [infer Ast extends ExpressionAst.Any]
266
+ ? FormulaOfAst<Ast>
267
+ : UnknownTag<"missing-ast">
268
+
269
+ export type FormulaOfPredicate<Value> =
270
+ Value extends true ? True :
271
+ Value extends false ? False :
272
+ Value extends Expression.Any ? FormulaOfExpression<Value> :
273
+ UnknownTag<"predicate:unsupported">
@@ -0,0 +1,31 @@
1
+ import * as Expression from "../scalar.js";
2
+ import type { PredicateAtom } from "./atom.js";
3
+ import type { AtomFormula, FalseFormula, PredicateFormula, TrueFormula } from "./formula.js";
4
+ export interface RuntimeContext {
5
+ readonly nonNullKeys: ReadonlySet<string>;
6
+ readonly nullKeys: ReadonlySet<string>;
7
+ readonly eqLiterals: ReadonlyMap<string, string>;
8
+ readonly neqLiterals: ReadonlyMap<string, ReadonlySet<string>>;
9
+ readonly sourceNames: ReadonlySet<string>;
10
+ readonly contradiction: boolean;
11
+ readonly unknown: boolean;
12
+ }
13
+ export declare const trueFormula: () => TrueFormula;
14
+ export declare const falseFormula: () => FalseFormula;
15
+ export declare const atomFormula: <Atom extends PredicateAtom>(atom: Atom) => AtomFormula<Atom>;
16
+ export declare const allFormula: (items: readonly PredicateFormula[]) => PredicateFormula;
17
+ export declare const anyFormula: (items: readonly PredicateFormula[]) => PredicateFormula;
18
+ export declare const notFormula: (item: PredicateFormula) => PredicateFormula;
19
+ export declare const andFormula: (left: PredicateFormula, right: PredicateFormula) => PredicateFormula;
20
+ export declare const orFormula: (left: PredicateFormula, right: PredicateFormula) => PredicateFormula;
21
+ export declare const analyzeFormula: (formula: PredicateFormula) => RuntimeContext;
22
+ export declare const normalizeFormula: (formula: PredicateFormula) => PredicateFormula;
23
+ export declare const formulaOfExpression: (value: Expression.Any) => PredicateFormula;
24
+ export declare const formulaOfPredicate: (value: boolean | Expression.Any) => PredicateFormula;
25
+ export declare const assumeFormulaTrue: (assumptions: PredicateFormula, formula: PredicateFormula) => PredicateFormula;
26
+ export declare const assumeFormulaFalse: (assumptions: PredicateFormula, formula: PredicateFormula) => PredicateFormula;
27
+ export declare const contradictsFormula: (assumptions: PredicateFormula, formula: PredicateFormula) => boolean;
28
+ export declare const impliesFormula: (assumptions: PredicateFormula, formula: PredicateFormula) => boolean;
29
+ export declare const guaranteedNonNullKeys: (assumptions: PredicateFormula) => ReadonlySet<string>;
30
+ export declare const guaranteedNullKeys: (assumptions: PredicateFormula) => ReadonlySet<string>;
31
+ export declare const guaranteedSourceNames: (assumptions: PredicateFormula) => ReadonlySet<string>;