orez-lite 0.12.21 → 0.13.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.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  Zero schema, SQLite initializer, and HTTP policy callbacks.
10
10
  - `orez-lite/local` prepares SQLite and owns the local native process.
11
11
  - `orez-lite/vite` starts the local host only while Vite is serving.
12
- - `orez-lite/rollup` generates count and sum migrations and projects their
12
+ - `orez-lite/aggregate` generates count and sum migrations and projects their
13
13
  optimistic client updates.
14
14
  - `orez-lite/cloudflare` provides the Cloudflare runtime and data-worker factory.
15
15
  - `orez-lite/cloudflare/build` provides Node-side worker build and deployment tools.
@@ -0,0 +1,85 @@
1
+ import type { Schema } from '@rocicorp/zero';
2
+ export type AggregateMode = 'existing' | 'materialized';
3
+ export type CountColumn = {
4
+ readonly kind: 'count';
5
+ };
6
+ export type SumColumn<SourceColumn extends string = string> = {
7
+ readonly kind: 'sum';
8
+ readonly source: SourceColumn;
9
+ };
10
+ type TableName<S extends Schema> = Extract<keyof S['tables'], string>;
11
+ type ColumnName<S extends Schema, TTable extends TableName<S>> = Extract<keyof S['tables'][TTable]['columns'], string>;
12
+ type NumericColumnName<S extends Schema, TTable extends TableName<S>> = Extract<{
13
+ [TColumn in ColumnName<S, TTable>]: S['tables'][TTable]['columns'][TColumn] extends {
14
+ readonly type: 'number';
15
+ } ? TColumn : never;
16
+ }[ColumnName<S, TTable>], string>;
17
+ export type AggregateDefinition<S extends Schema> = {
18
+ [TSource in TableName<S>]: {
19
+ [TTarget in TableName<S>]: {
20
+ readonly source: TSource;
21
+ readonly target: TTarget;
22
+ readonly mode: AggregateMode;
23
+ readonly groupBy: Readonly<Partial<Record<ColumnName<S, TSource>, ColumnName<S, TTarget>>>>;
24
+ readonly columns: Readonly<Partial<Record<NumericColumnName<S, TTarget>, CountColumn | SumColumn<NumericColumnName<S, TSource>>>>>;
25
+ };
26
+ }[TableName<S>];
27
+ }[TableName<S>];
28
+ type ColumnRef = {
29
+ readonly logical: string;
30
+ readonly physical: string;
31
+ };
32
+ type CompiledGroup = {
33
+ readonly source: ColumnRef;
34
+ readonly target: ColumnRef;
35
+ };
36
+ type CompiledColumn = {
37
+ readonly kind: 'count';
38
+ readonly target: ColumnRef;
39
+ } | {
40
+ readonly kind: 'sum';
41
+ readonly source: ColumnRef;
42
+ readonly target: ColumnRef;
43
+ };
44
+ type CompiledAggregate = {
45
+ readonly name: string;
46
+ readonly source: {
47
+ readonly logical: string;
48
+ readonly physical: string;
49
+ readonly primaryKey: readonly string[];
50
+ };
51
+ readonly target: {
52
+ readonly logical: string;
53
+ readonly physical: string;
54
+ readonly primaryKey: readonly string[];
55
+ };
56
+ readonly mode: AggregateMode;
57
+ readonly groups: readonly CompiledGroup[];
58
+ readonly columns: readonly CompiledColumn[];
59
+ };
60
+ type AggregateRuntime<S extends Schema> = {
61
+ readonly schema: S;
62
+ readonly definitions: readonly CompiledAggregate[];
63
+ readonly queryBuilder: object;
64
+ readonly bySource: ReadonlyMap<string, readonly CompiledAggregate[]>;
65
+ };
66
+ declare const AGGREGATE_RUNTIME: unique symbol;
67
+ export type AggregateSet<S extends Schema = Schema> = {
68
+ readonly [AGGREGATE_RUNTIME]: AggregateRuntime<S>;
69
+ };
70
+ export declare function count(): CountColumn;
71
+ export declare function sum<const SourceColumn extends string>(source: SourceColumn): SumColumn<SourceColumn>;
72
+ export type AggregateDefinitions<S extends Schema> = Readonly<Record<string, AggregateDefinition<S>>>;
73
+ type UnionToIntersection<U> = (U extends unknown ? (arg: U) => void : never) extends (arg: infer I) => void ? I : never;
74
+ export declare function mergeAggregateDefinitions<const Records extends ReadonlyArray<Readonly<Record<string, object>>>>(...records: Records): UnionToIntersection<Records[number]>;
75
+ export declare function defineAggregates<S extends Schema, const Definitions extends Readonly<Record<string, AggregateDefinition<S>>>>(schema: S, definitions: Definitions): AggregateSet<S>;
76
+ export declare function aggregateMigrationStatements(aggregates: AggregateSet): readonly string[];
77
+ export declare function aggregateMigrationSQL(aggregates: AggregateSet): string;
78
+ /**
79
+ * Wrap a Zero client transaction so source-table CRUD also projects its
80
+ * declared aggregates. Server transactions are returned unchanged because SQLite
81
+ * triggers own the authoritative write.
82
+ */
83
+ export declare function withOptimisticAggregates<T extends object>(tx: T, aggregates: AggregateSet): T;
84
+ export {};
85
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../src/aggregate.ts"],"names":[],"mappings":"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"}