effect-app 4.0.0-beta.281 → 4.0.0-beta.283
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/CHANGELOG.md +32 -0
- package/dist/DataDependencies.d.ts +159 -0
- package/dist/DataDependencies.d.ts.map +1 -0
- package/dist/DataDependencies.js +44 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +16 -8
- package/dist/Model/query/new-kid-interpreter.js +2 -2
- package/dist/QueueMaker.d.ts +8 -10
- package/dist/QueueMaker.d.ts.map +1 -1
- package/dist/QueueMaker.js +9 -2
- package/dist/Schema/Class.d.ts +1 -1
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +2 -2
- package/dist/Schema/ext.d.ts +1 -1
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/moreStrings.d.ts +1 -1
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/numbers.d.ts +1 -1
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/schema.d.ts +1 -1
- package/dist/Schema/schema.d.ts.map +1 -1
- package/dist/Schema/schema.js +2 -2
- package/dist/Schema/strings.d.ts +1 -1
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema.d.ts +14 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +3 -2
- package/dist/SchemaAST.d.ts +23 -0
- package/dist/SchemaAST.d.ts.map +1 -0
- package/dist/SchemaAST.js +25 -0
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +44 -7
- package/dist/client/makeClient.d.ts +19 -23
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +3 -10
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/rpc/Invalidation.d.ts +994 -2
- package/dist/rpc/Invalidation.d.ts.map +1 -1
- package/dist/rpc/Invalidation.js +10 -3
- package/package.json +2 -2
- package/src/DataDependencies.ts +78 -0
- package/src/Model/Repository/internal/internal.ts +15 -1
- package/src/Model/query/new-kid-interpreter.ts +1 -1
- package/src/QueueMaker.ts +8 -16
- package/src/Schema/Class.ts +1 -1
- package/src/Schema/ext.ts +1 -1
- package/src/Schema/moreStrings.ts +1 -1
- package/src/Schema/numbers.ts +1 -1
- package/src/Schema/schema.ts +1 -1
- package/src/Schema/strings.ts +1 -1
- package/src/Schema.ts +14 -1
- package/src/SchemaAST.ts +29 -0
- package/src/client/apiClientFactory.ts +64 -16
- package/src/client/makeClient.ts +12 -22
- package/src/client.ts +1 -0
- package/src/rpc/Invalidation.ts +16 -2
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/rpc.test.ts +7 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 4.0.0-beta.283
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0054611: Derive query invalidation from repository read/write dependencies and propagate dependency metadata through RPC clients.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 0054611: Stream RPC: drain read/write data-dependencies per emitted value chunk instead of sending the
|
|
12
|
+
cumulative set on every metadata chunk. Each metadata chunk now carries only the delta recorded
|
|
13
|
+
since the last chunk, the bucket is cleared for the next segment, and the terminal "done"/"error"
|
|
14
|
+
chunks drain the remainder. The emit condition also broadens to include non-empty reads, so stream
|
|
15
|
+
queries forward their read-dependencies mid-stream too. The client already accumulates deltas into
|
|
16
|
+
its per-call recorder, so no FE change is required.
|
|
17
|
+
|
|
18
|
+
## 4.0.0-beta.282
|
|
19
|
+
|
|
20
|
+
### Minor Changes
|
|
21
|
+
|
|
22
|
+
- b2df3fa: Align `Schema.Void` with TypeScript `void` return-value semantics (effect-smol PR #2475 / `b7d46ab`).
|
|
23
|
+
|
|
24
|
+
`S.Void` now accepts **any present value** at runtime and discards it to `undefined`, while keeping the decoded/encoded type as `void` — matching a `void` return whose result callers never observe. This is implemented as an override of the AST node in a new `effect-app/SchemaAST` module (`export * from "effect/SchemaAST"` plus a `Void` subclass whose parser mirrors the PR's `fromAnyToConst(undefined)`), so there is a single canonical `Void` used everywhere, including RPC success schemas.
|
|
25
|
+
|
|
26
|
+
- New `effect-app/SchemaAST` module; internal `SchemaAST` imports across the libs now route through it.
|
|
27
|
+
- Removed `ForceVoid` from `effect-app/client/makeClient` — use `S.Void` directly, which now carries this behaviour.
|
|
28
|
+
- `S.Void_` remains available as effect's original (`undefined`-only) Void.
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- f150cf9: Remove obsolete queue machinery left unused after the move to cluster entities: the SB/SQLite/mem `QueueMaker` implementations (`QueueMaker/{SQLQueue,memQueue,sbqueue}.ts`), their `ServiceBus.ts`/`memQueue.ts` transports, and `RequestFiberSet.ts` (its `setRootParentSpan` helper is inlined into `MainFiberSet`). `effect-app/QueueMaker` keeps only `QueueMeta`; the `QueueBase` interface and empty `QueueMaker` ops object are dropped.
|
|
33
|
+
- e8842aa: Update effect packages to `4.0.0-beta.88` (from `beta.86`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`. Also bump `@effect-app/cli` to `2.1.0-beta.35`. No source changes required — typecheck and tests pass unchanged.
|
|
34
|
+
|
|
3
35
|
## 4.0.0-beta.281
|
|
4
36
|
|
|
5
37
|
### Patch Changes
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import * as Ref from "effect/Ref";
|
|
2
|
+
import * as Context from "./Context.js";
|
|
3
|
+
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as S from "./Schema.js";
|
|
5
|
+
export declare const DataDependency: S.Struct<{
|
|
6
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
7
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
8
|
+
Default: A;
|
|
9
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
10
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
11
|
+
};
|
|
12
|
+
Default: "repo";
|
|
13
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
14
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
15
|
+
};
|
|
16
|
+
readonly name: S.String;
|
|
17
|
+
}>;
|
|
18
|
+
export type DataDependency = S.Schema.Type<typeof DataDependency>;
|
|
19
|
+
export declare const DataDependencies: S.$Array<S.Struct<{
|
|
20
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
21
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
22
|
+
Default: A;
|
|
23
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
24
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
25
|
+
};
|
|
26
|
+
Default: "repo";
|
|
27
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
28
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
29
|
+
};
|
|
30
|
+
readonly name: S.String;
|
|
31
|
+
}>> & {
|
|
32
|
+
withConstructorDefault: S.withConstructorDefault<S.$Array<S.Struct<{
|
|
33
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
34
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
35
|
+
Default: A;
|
|
36
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
37
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
38
|
+
};
|
|
39
|
+
Default: "repo";
|
|
40
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
41
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
42
|
+
};
|
|
43
|
+
readonly name: S.String;
|
|
44
|
+
}>>>;
|
|
45
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
46
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
47
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
48
|
+
Default: A;
|
|
49
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
50
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
51
|
+
};
|
|
52
|
+
Default: "repo";
|
|
53
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
54
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
55
|
+
};
|
|
56
|
+
readonly name: S.String;
|
|
57
|
+
}>>, never>;
|
|
58
|
+
};
|
|
59
|
+
export type DataDependencies = S.Schema.Type<typeof DataDependencies>;
|
|
60
|
+
export declare const DataDependencySet: S.Struct<{
|
|
61
|
+
readonly reads: S.$Array<S.Struct<{
|
|
62
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
63
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
64
|
+
Default: A;
|
|
65
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
66
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
67
|
+
};
|
|
68
|
+
Default: "repo";
|
|
69
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
70
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
71
|
+
};
|
|
72
|
+
readonly name: S.String;
|
|
73
|
+
}>> & {
|
|
74
|
+
withConstructorDefault: S.withConstructorDefault<S.$Array<S.Struct<{
|
|
75
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
76
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
77
|
+
Default: A;
|
|
78
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
79
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
80
|
+
};
|
|
81
|
+
Default: "repo";
|
|
82
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
83
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
84
|
+
};
|
|
85
|
+
readonly name: S.String;
|
|
86
|
+
}>>>;
|
|
87
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
88
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
89
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
90
|
+
Default: A;
|
|
91
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
92
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
93
|
+
};
|
|
94
|
+
Default: "repo";
|
|
95
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
96
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
97
|
+
};
|
|
98
|
+
readonly name: S.String;
|
|
99
|
+
}>>, never>;
|
|
100
|
+
};
|
|
101
|
+
readonly writes: S.$Array<S.Struct<{
|
|
102
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
103
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
104
|
+
Default: A;
|
|
105
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
106
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
107
|
+
};
|
|
108
|
+
Default: "repo";
|
|
109
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
110
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
111
|
+
};
|
|
112
|
+
readonly name: S.String;
|
|
113
|
+
}>> & {
|
|
114
|
+
withConstructorDefault: S.withConstructorDefault<S.$Array<S.Struct<{
|
|
115
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
116
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
117
|
+
Default: A;
|
|
118
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
119
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
120
|
+
};
|
|
121
|
+
Default: "repo";
|
|
122
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
123
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
124
|
+
};
|
|
125
|
+
readonly name: S.String;
|
|
126
|
+
}>>>;
|
|
127
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.Struct<{
|
|
128
|
+
readonly type: import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
129
|
+
changeDefault: <A extends "repo" | "signal">(a: A) => import("effect/Schema").Literals<readonly ["repo", "signal"]> & {
|
|
130
|
+
Default: A;
|
|
131
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
132
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
133
|
+
};
|
|
134
|
+
Default: "repo";
|
|
135
|
+
withConstructorDefault: S.withConstructorDefault<import("effect/Schema").Literals<readonly ["repo", "signal"]>>;
|
|
136
|
+
withDecodingDefaultType: S.withDecodingDefaultType<import("effect/Schema").Literals<readonly ["repo", "signal"]>, never>;
|
|
137
|
+
};
|
|
138
|
+
readonly name: S.String;
|
|
139
|
+
}>>, never>;
|
|
140
|
+
};
|
|
141
|
+
}>;
|
|
142
|
+
export type DataDependencySet = S.Schema.Type<typeof DataDependencySet>;
|
|
143
|
+
export interface DataDependencyRecorderService {
|
|
144
|
+
readonly read: (dependency: DataDependency) => Effect.Effect<void>;
|
|
145
|
+
readonly write: (dependency: DataDependency) => Effect.Effect<void>;
|
|
146
|
+
readonly get: Effect.Effect<DataDependencySet>;
|
|
147
|
+
readonly drain: Effect.Effect<DataDependencySet>;
|
|
148
|
+
readonly drainWrites: Effect.Effect<DataDependencies>;
|
|
149
|
+
}
|
|
150
|
+
export declare const DataDependencyRecorder: Context.Reference<DataDependencyRecorderService>;
|
|
151
|
+
export type DataDependencyRecorder = typeof DataDependencyRecorder;
|
|
152
|
+
export declare const makeDataDependencyRecorder: (readsRef: Ref.Ref<DataDependencies>, writesRef: Ref.Ref<DataDependencies>) => DataDependencyRecorderService;
|
|
153
|
+
export declare const repo: (name: string) => DataDependency;
|
|
154
|
+
export declare const signal: (name: string) => DataDependency;
|
|
155
|
+
export declare const QueryReadDependenciesMetaKey = "effect-app.query.readDependencies";
|
|
156
|
+
export declare const read: (dependency: DataDependency) => Effect.Effect<void, never, never>;
|
|
157
|
+
export declare const write: (dependency: DataDependency) => Effect.Effect<void, never, never>;
|
|
158
|
+
export declare const intersects: (a: ReadonlyArray<DataDependency>, b: ReadonlyArray<DataDependency>) => boolean;
|
|
159
|
+
//# sourceMappingURL=DataDependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataDependencies.d.ts","sourceRoot":"","sources":["../src/DataDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAEhC,eAAO,MAAM,cAAc;;;;;;;;;;;;EAGzB,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC,CAAA;AAEjE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA0B,CAAA;AACvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAErE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEvE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;CACtD;AAQD,eAAO,MAAM,sBAAsB,kDAWlC,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,eAAO,MAAM,0BAA0B,aAC3B,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,aACxB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,KACnC,6BAYD,CAAA;AAEF,eAAO,MAAM,IAAI,SAAU,MAAM,KAAG,cAA0C,CAAA;AAC9E,eAAO,MAAM,MAAM,SAAU,MAAM,KAAG,cAA4C,CAAA;AAElF,eAAO,MAAM,4BAA4B,sCAAsC,CAAA;AAE/E,eAAO,MAAM,IAAI,eAAgB,cAAc,sCAA0D,CAAA;AAEzG,eAAO,MAAM,KAAK,eAAgB,cAAc,sCAA2D,CAAA;AAE3G,eAAO,MAAM,UAAU,MAClB,aAAa,CAAC,cAAc,CAAC,KAC7B,aAAa,CAAC,cAAc,CAAC,YAC4B,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as Ref from "effect/Ref";
|
|
2
|
+
import * as Context from "./Context.js";
|
|
3
|
+
import * as Effect from "./Effect.js";
|
|
4
|
+
import * as S from "./Schema.js";
|
|
5
|
+
export const DataDependency = S.Struct({
|
|
6
|
+
type: S.Literals(["repo", "signal"]),
|
|
7
|
+
name: S.String
|
|
8
|
+
});
|
|
9
|
+
export const DataDependencies = S.Array(DataDependency);
|
|
10
|
+
export const DataDependencySet = S.Struct({
|
|
11
|
+
reads: DataDependencies,
|
|
12
|
+
writes: DataDependencies
|
|
13
|
+
});
|
|
14
|
+
const containsDependency = (dependencies, dependency) => dependencies.some((_) => _.type === dependency.type && _.name === dependency.name);
|
|
15
|
+
const appendDependency = (dependency) => (dependencies) => containsDependency(dependencies, dependency) ? dependencies : [...dependencies, dependency];
|
|
16
|
+
export const DataDependencyRecorder = Context.Reference("effect-app/DataDependencyRecorder", {
|
|
17
|
+
defaultValue: () => ({
|
|
18
|
+
read: (_dependency) => Effect.void,
|
|
19
|
+
write: (_dependency) => Effect.void,
|
|
20
|
+
get: Effect.succeed({ reads: [], writes: [] }),
|
|
21
|
+
drain: Effect.succeed({ reads: [], writes: [] }),
|
|
22
|
+
drainWrites: Effect.succeed([])
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
export const makeDataDependencyRecorder = (readsRef, writesRef) => ({
|
|
26
|
+
read: (dependency) => Ref.update(readsRef, appendDependency(dependency)),
|
|
27
|
+
write: (dependency) => Ref.update(writesRef, appendDependency(dependency)),
|
|
28
|
+
get: Effect.all({
|
|
29
|
+
reads: Ref.get(readsRef),
|
|
30
|
+
writes: Ref.get(writesRef)
|
|
31
|
+
}),
|
|
32
|
+
drain: Effect.all({
|
|
33
|
+
reads: Ref.getAndSet(readsRef, []),
|
|
34
|
+
writes: Ref.getAndSet(writesRef, [])
|
|
35
|
+
}),
|
|
36
|
+
drainWrites: Ref.getAndSet(writesRef, [])
|
|
37
|
+
});
|
|
38
|
+
export const repo = (name) => ({ type: "repo", name });
|
|
39
|
+
export const signal = (name) => ({ type: "signal", name });
|
|
40
|
+
export const QueryReadDependenciesMetaKey = "effect-app.query.readDependencies";
|
|
41
|
+
export const read = (dependency) => DataDependencyRecorder.use((_) => _.read(dependency));
|
|
42
|
+
export const write = (dependency) => DataDependencyRecorder.use((_) => _.write(dependency));
|
|
43
|
+
export const intersects = (a, b) => a.some((dependency) => containsDependency(b, dependency));
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YURlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9EYXRhRGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxDQUFDLE1BQU0sYUFBYSxDQUFBO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtDQUNmLENBQUMsQ0FBQTtBQUdGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7QUFHdkQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLE1BQU0sRUFBRSxnQkFBZ0I7Q0FDekIsQ0FBQyxDQUFBO0FBV0YsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFlBQTJDLEVBQUUsVUFBMEIsRUFBRSxFQUFFLENBQ3JHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUVwRixNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUE4QixFQUFvQixFQUFFLENBQzVHLGtCQUFrQixDQUFDLFlBQVksRUFBRSxV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../src/Model/Repository/internal/internal.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAG1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAI9D,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../src/Model/Repository/internal/internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,14 @@ import * as HashSet from "effect/HashSet";
|
|
|
6
6
|
import * as Pipeable from "effect/Pipeable";
|
|
7
7
|
import * as Ref from "effect/Ref";
|
|
8
8
|
import * as Result from "effect/Result";
|
|
9
|
-
import * as SchemaAST from "
|
|
9
|
+
import * as SchemaAST from "../../../SchemaAST.js";
|
|
10
10
|
import * as Unify from "effect/Unify";
|
|
11
11
|
import * as Array from "../../../Array.js";
|
|
12
12
|
import { toNonEmptyArray } from "../../../Array.js";
|
|
13
13
|
import * as Chunk from "../../../Chunk.js";
|
|
14
14
|
import { NotFoundError } from "../../../client/errors.js";
|
|
15
15
|
import * as Context from "../../../Context.js";
|
|
16
|
+
import * as DataDependencies from "../../../DataDependencies.js";
|
|
16
17
|
import * as Effect from "../../../Effect.js";
|
|
17
18
|
import { flatMapOption } from "../../../Effect.js";
|
|
18
19
|
import * as Option from "../../../Option.js";
|
|
@@ -45,6 +46,9 @@ export function makeRepoInternal() {
|
|
|
45
46
|
const decode = flow(S.decodeEffectConcurrently(schema), provideRctx);
|
|
46
47
|
const decodeMany = flow(S.decodeEffectConcurrently(S.Array(schema)), provideRctx);
|
|
47
48
|
const store = yield* mkStore(args.makeInitial, args.config);
|
|
49
|
+
const repoDependency = DataDependencies.repo(name);
|
|
50
|
+
const recordRead = DataDependencies.read(repoDependency);
|
|
51
|
+
const recordWrite = DataDependencies.write(repoDependency);
|
|
48
52
|
const cms = Effect.map(getContextMap.pipe(Effect.orDie), (_) => ({
|
|
49
53
|
get: (id) => _.get(`${name}.${id}`),
|
|
50
54
|
set: (id, etag) => _.set(`${name}.${id}`, etag)
|
|
@@ -88,7 +92,7 @@ export function makeRepoInternal() {
|
|
|
88
92
|
.pipe(Effect.flatMap((cm) => Effect.map(store.all, (_) => _.map((_) => mapReverse(_, cm.set)))));
|
|
89
93
|
const all = Effect
|
|
90
94
|
.flatMap(allE, (_) => decodeMany(_).pipe(Effect.orDie))
|
|
91
|
-
.pipe(Effect.map((_) => _), Effect.withSpan("Repository.all", {
|
|
95
|
+
.pipe(Effect.tap(() => recordRead), Effect.map((_) => _), Effect.withSpan("Repository.all", {
|
|
92
96
|
kind: "client",
|
|
93
97
|
attributes: { "app.entity": name }
|
|
94
98
|
}, { captureStackTrace: false }));
|
|
@@ -137,6 +141,7 @@ export function makeRepoInternal() {
|
|
|
137
141
|
kind: "client",
|
|
138
142
|
attributes: { "app.entity": name }
|
|
139
143
|
})(function* (id) {
|
|
144
|
+
yield* recordRead;
|
|
140
145
|
yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
|
|
141
146
|
return yield* flatMapOption(findE(id), (_) => Effect.orDie(decode(_)));
|
|
142
147
|
});
|
|
@@ -151,6 +156,7 @@ export function makeRepoInternal() {
|
|
|
151
156
|
const saveAll = (a) => encodeMany(Array.fromIterable(a))
|
|
152
157
|
.pipe(Effect.orDie, Effect.andThen(saveAllE));
|
|
153
158
|
const saveAndPublish = Effect.fn("Repository.saveAndPublish", { attributes: { "app.entity": name } })(function* (items, events = []) {
|
|
159
|
+
yield* recordWrite;
|
|
154
160
|
const it = Chunk.fromIterable(items);
|
|
155
161
|
const evts = [...events];
|
|
156
162
|
yield* Effect.annotateCurrentSpan({
|
|
@@ -163,6 +169,7 @@ export function makeRepoInternal() {
|
|
|
163
169
|
(_) => flatMapOption(_, pub), Effect.andThen(changeFeed.publish([Chunk.toArray(it), "save"])), Effect.asVoid);
|
|
164
170
|
});
|
|
165
171
|
const removeAndPublish = Effect.fn("Repository.removeAndPublish", { attributes: { "app.entity": name } })(function* (a, events = []) {
|
|
172
|
+
yield* recordWrite;
|
|
166
173
|
const { set } = yield* cms;
|
|
167
174
|
const it = [...a];
|
|
168
175
|
const evts = [...events];
|
|
@@ -184,6 +191,7 @@ export function makeRepoInternal() {
|
|
|
184
191
|
}
|
|
185
192
|
});
|
|
186
193
|
const removeById = Effect.fn("Repository.removeById", { attributes: { "app.entity": name } })(function* (idOrIds) {
|
|
194
|
+
yield* recordWrite;
|
|
187
195
|
const ids = globalThis.Array.isArray(idOrIds)
|
|
188
196
|
? idOrIds
|
|
189
197
|
: [idOrIds];
|
|
@@ -276,7 +284,7 @@ export function makeRepoInternal() {
|
|
|
276
284
|
"app.query.ttype": a.ttype,
|
|
277
285
|
"app.query.mode": a.mode,
|
|
278
286
|
"db.response.returned_rows": Array.isArray(r) ? r.length : 1
|
|
279
|
-
})), Effect.withSpan("Repository.query", {
|
|
287
|
+
})), Effect.tap(() => recordRead), Effect.withSpan("Repository.query", {
|
|
280
288
|
kind: "client",
|
|
281
289
|
attributes: { "app.entity": name }
|
|
282
290
|
}, { captureStackTrace: false }));
|
|
@@ -340,7 +348,7 @@ export function makeRepoInternal() {
|
|
|
340
348
|
validateSample,
|
|
341
349
|
queryRaw(schema, q) {
|
|
342
350
|
const dec = S.decodeEffectConcurrently(S.Array(schema));
|
|
343
|
-
return store.queryRaw(q).pipe(Effect.flatMap(dec), Effect.withSpan("Repository.queryRaw", {
|
|
351
|
+
return store.queryRaw(q).pipe(Effect.flatMap(dec), Effect.tap(() => recordRead), Effect.withSpan("Repository.queryRaw", {
|
|
344
352
|
kind: "client",
|
|
345
353
|
attributes: { "app.entity": name }
|
|
346
354
|
}, { captureStackTrace: false }));
|
|
@@ -358,8 +366,8 @@ export function makeRepoInternal() {
|
|
|
358
366
|
const decMany = S.decodeEffectConcurrently(S.Array(schema));
|
|
359
367
|
const spanAttrs = { kind: "client", attributes: { "app.entity": name } };
|
|
360
368
|
return {
|
|
361
|
-
all: allE.pipe(Effect.flatMap(decMany), Effect.map((_) => _), Effect.withSpan("Repository.mapped.all", spanAttrs, { captureStackTrace: false })),
|
|
362
|
-
find: (id) => flatMapOption(findE(id), dec).pipe(Effect.withSpan("Repository.mapped.find", {
|
|
369
|
+
all: allE.pipe(Effect.flatMap(decMany), Effect.tap(() => recordRead), Effect.map((_) => _), Effect.withSpan("Repository.mapped.all", spanAttrs, { captureStackTrace: false })),
|
|
370
|
+
find: (id) => flatMapOption(findE(id), dec).pipe(Effect.tap(() => recordRead), Effect.withSpan("Repository.mapped.find", {
|
|
363
371
|
...spanAttrs,
|
|
364
372
|
attributes: { ...spanAttrs.attributes, "app.entity.id": id }
|
|
365
373
|
}, { captureStackTrace: false })),
|
|
@@ -378,7 +386,7 @@ export function makeRepoInternal() {
|
|
|
378
386
|
// })
|
|
379
387
|
// )
|
|
380
388
|
// },
|
|
381
|
-
save: (...xes) => Effect.flatMap(encMany(xes), (_) => saveAllE(_)).pipe(Effect.withSpan("Repository.mapped.save", spanAttrs, { captureStackTrace: false }))
|
|
389
|
+
save: (...xes) => Effect.flatMap(encMany(xes), (_) => saveAllE(_)).pipe(Effect.tap(() => recordWrite), Effect.withSpan("Repository.mapped.save", spanAttrs, { captureStackTrace: false }))
|
|
382
390
|
};
|
|
383
391
|
}
|
|
384
392
|
};
|
|
@@ -427,4 +435,4 @@ export function makeStore() {
|
|
|
427
435
|
return makeStore;
|
|
428
436
|
};
|
|
429
437
|
}
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9pbnRlcm5hbC9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUE7QUFFN0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQTtBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRCxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxDQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDdkMsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixD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
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9pbnRlcm5hbC9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUE7QUFDekMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUE7QUFFbEQsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQTtBQUM5QyxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUM1QyxPQUFPLEtBQUssQ0FBQyxNQUFNLG9CQUFvQixDQUFB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
|