effect-app 4.0.0-beta.271 → 4.0.0-beta.273
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 +13 -0
- package/dist/RequestContext.d.ts +8 -62
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +9 -9
- package/dist/Schema/Class.d.ts +9 -6
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +57 -11
- package/dist/Schema.d.ts +1 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2 -2
- package/dist/builtin.d.ts +2 -14
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +1 -1
- package/dist/client/clientFor.d.ts +1 -0
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/makeClient.d.ts +7 -6
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +1 -1
- package/package.json +1 -1
- package/src/RequestContext.ts +14 -14
- package/src/Schema/Class.ts +107 -31
- package/src/Schema.ts +1 -1
- package/src/builtin-json.d.ts +24 -0
- package/src/builtin.ts +16 -21
- package/src/client/clientFor.ts +1 -0
- package/src/client/makeClient.ts +5 -6
- package/test/special.test.ts +232 -0
|
@@ -36,17 +36,18 @@ type InvalidationResources = Record<string, Record<string, unknown>>;
|
|
|
36
36
|
* An invalidation instruction returned from `invalidatesQueries`. One of:
|
|
37
37
|
* - a raw query key (`ReadonlyArray<string>`)
|
|
38
38
|
* - an RPC handler object (`{ id, options? }`) — query key derived from `id`
|
|
39
|
-
* -
|
|
39
|
+
* - a compatibility `{ filters: { queryKey }, options? }` shape
|
|
40
40
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* adapter narrows them via the `InvalidationEntry` alias.
|
|
41
|
+
* Predicate filters are intentionally not represented: atom invalidation is keyed by
|
|
42
|
+
* concrete query keys.
|
|
44
43
|
*/
|
|
45
|
-
export type InvalidateQueryInstruction<Filters =
|
|
44
|
+
export type InvalidateQueryInstruction<Filters = {
|
|
45
|
+
readonly queryKey: ReadonlyArray<unknown>;
|
|
46
|
+
}, Options = Record<string, unknown>> = ReadonlyArray<string> | {
|
|
46
47
|
readonly id: string;
|
|
47
48
|
readonly options?: ClientForOptions;
|
|
48
49
|
} | {
|
|
49
|
-
readonly filters
|
|
50
|
+
readonly filters: Filters;
|
|
50
51
|
readonly options?: Options;
|
|
51
52
|
};
|
|
52
53
|
export type InvalidationCallback<Resources, Input = unknown, Success = unknown, Failure = unknown> = (queryKey: readonly string[], resources: QueryOnlyResources<Resources>, ...args: [Input] extends [void] ? [exit: Exit.Exit<Success, Failure>] : [input: Input, exit: Exit.Exit<Success, Failure>]) => ReadonlyArray<InvalidateQueryInstruction>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeClient.d.ts","sourceRoot":"","sources":["../../src/client/makeClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;IAC3F,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC5B;AAKD;;GAEG;AACH,eAAO,MAAM,SAAS,8DAInB,CAAA;AAEH,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAE/F,KAAK,mBAAmB,CAAC,GAAG,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,OAAO,CACxC,CAAA;AAED,KAAK,iBAAiB,CAAC,QAAQ,IAAI;KAChC,CAAC,IAAI,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;CACjG,CAAA;AAED,KAAK,kBAAkB,CAAC,SAAS,IAAI;KAClC,CAAC,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACxD,CAAA;AAED,KAAK,gBAAgB,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,OAAO,SAAS,KAAK,GAAG,IAAI,GACvF,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7B,KAAK,iBAAiB,CAAC,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,OAAO,SAAS,OAAO,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEzG,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpE
|
|
1
|
+
{"version":3,"file":"makeClient.d.ts","sourceRoot":"","sources":["../../src/client/makeClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;IAC3F,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC5B;AAKD;;GAEG;AACH,eAAO,MAAM,SAAS,8DAInB,CAAA;AAEH,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;AAE/F,KAAK,mBAAmB,CAAC,GAAG,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,OAAO,CACxC,CAAA;AAED,KAAK,iBAAiB,CAAC,QAAQ,IAAI;KAChC,CAAC,IAAI,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;CACjG,CAAA;AAED,KAAK,kBAAkB,CAAC,SAAS,IAAI;KAClC,CAAC,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CACxD,CAAA;AAED,KAAK,gBAAgB,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,OAAO,SAAS,KAAK,GAAG,IAAI,GACvF,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7B,KAAK,iBAAiB,CAAC,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,OAAO,SAAS,OAAO,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEzG,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,CACpC,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAAE,EACvD,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAE/B,aAAa,CAAC,MAAM,CAAC,GACrB;IACA,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAA;CACpC,GACC;IACA,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAEH,MAAM,MAAM,oBAAoB,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,CACnG,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACxC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GACjE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAClD,aAAa,CAAC,0BAA0B,CAAC,CAAA;AAE9C,MAAM,MAAM,kBAAkB,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI;IACjG,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACrF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAA;CAC3C,CAAA;AAED,KAAK,4BAA4B,CAC/B,SAAS,EACT,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,EACrB,KAAK,SAAS,CAAC,CAAC,GAAG,IACjB,kBAAkB,CACpB,SAAS,EACT,gBAAgB,CAAC,OAAO,CAAC,EACzB,iBAAiB,CAAC,OAAO,CAAC,EAC1B,KAAK,CAAC,MAAM,CAAC,CACd,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,QAC9C,KAAK,EAAE,OAAO,EAAE,OAAO,sBACF,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KACtG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAA6B,CAAA;AAErF,eAAO,MAAM,6BAA6B,GAAI,SAAS,QACtD,KAAK,EAAE,OAAO,EAAE,OAAO,sBACF,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KACtG,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAuB,CAAA;AAEjF,eAAO,MAAM,8BAA8B,GAAI,SAAS,OAC9C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAA;AAEtE,KAAK,sBAAsB,CACzB,IAAI,EACJ,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,EACrB,KAAK,SAAS,CAAC,CAAC,GAAG,EACnB,MAAM,EACN,UAAU,SAAS,MAAM,EACzB,IAAI,SAAS,SAAS,GAAG,OAAO,EAChC,MAAM,SAAS,OAAO,EACtB,SAAS,GAAG,KAAK,EACjB,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,KAAK,EAC3B,UAAU,GAAG,OAAO,IAElB,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAChF;IACA,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC5D,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;IAClB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,GAAG,UAAU,IAAI,GAAG,EAAE,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAA;CAC9C,GACC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAA;AAE9D,eAAO,MAAM,aAAa,GACxB,UAAU,SAAS,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EACtE,aAAa,SAAS,CAAC,CAAC,GAAG,sBACf,UAAU,kBAAkB,aAAa;uBA4c3B,UAAU,SAAS,MAAM,cAAc,UAAU;;QAMvE;;;;WAIG;0BAxZ0B,IAAI,EAAE,SAAS,SAAS,qBAAqB;aAGxE,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;wBAM/B,IAAI;;;;;;;;;;;uBA1DiB,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;aA+F1C,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;wBAGnD,KAAK;;wBAML,IAAI;;;;;;;;;;;;;;;;;;;;;;;;aAmClB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAA;aAAE;0BAGnD,KAAK;;wBAMP,IAAI;;;;;;;;;;;;;;;;;;;;;;;aAkClB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAC,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;0BAGlE,KAAK;wBAAU,KAAK;;wBAMtB,IAAI;;;;;;;;aA2BlB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2C7C,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;wBAIrD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;aA2CjB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAA;aAAE;;;;;;;;;;;;;;;;;;;;;;;aA0CnE,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAC,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;;;;;;;aA6BnF,GAAG,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM;;;;;QAoDpD;;;;WAIG;4BA9Z0B,IAAI,EAAE,SAAS,SAAS,qBAAqB;aAGxE,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;wBAM/B,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAqClB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;wBAGnD,KAAK;;wBAML,IAAI;;;;;;;;;;;;;;;;;;;;;;;;aAmClB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAA;aAAE;0BAGnD,KAAK;;wBAMP,IAAI;;;;;;;;;;;;;;;;;;;;;;;aAkClB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAC,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;0BAGlE,KAAK;wBAAU,KAAK;;wBAMtB,IAAI;;;;;;;;aA2BlB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA2C7C,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,OAAO,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACvC,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,UACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;wBAIrD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;aA2CjB,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EACrC,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAA;aAAE;;;;;;;;;;;;;;;;;;;;;;;aA0CnE,GAAG,SAAS,MAAM,EAClB,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAC/B,CAAC,SAAS,oDAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;gBAAE,OAAO,CAAC,EAAE,KAAK,CAAC;gBAAC,KAAK,CAAC,EAAE,KAAK,CAAA;aAAE;;;;;;;aA6BnF,GAAG,SAAS,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM;;;;;;CAgEzD,CAAA"}
|
|
@@ -74,4 +74,4 @@ export const makeRpcClient = (middleware, generalErrors) => {
|
|
|
74
74
|
TaggedRequestFor
|
|
75
75
|
};
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvbWFrZUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssb0JBQW9CLE1BQU0sNkJBQTZCLENBQUE7QUFFbkUsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQWVsQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxDQUFhLEVBQUUsRUFBRSxDQUN0QyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFFMUc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQztLQUN2QixPQUFPLENBQUMsQ0FBQyxDQUFVLEVBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDM0MsSUFBSSxDQUNILENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQW1CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDcEgsQ0FBQTtBQXNFSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxHQUFjLEVBQUUsQ0FDckQsQ0FDRSxrQkFBdUcsRUFDL0MsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7QUFFckYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsR0FBYyxFQUFFLENBQzdELENBQ0Usa0JBQXVHLEVBQzdDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQTtBQUVqRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxHQUFjLEVBQUUsQ0FDNUQsQ0FBQyxFQUFFLENBQWlFLENBQUE7QUFnQ3RFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUczQixVQUFzQixFQUFFLGFBQTZCLEVBQUUsRUFBRTtJQXNCekQsU0FBUyxnQkFBZ0IsQ0FDdkIsR0FBUSxFQUNSLE1BQWMsRUFDZCxNQUFVO1FBRVYsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUN6QixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDNUYsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hDLENBQUE7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsT0FBTztZQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUMxQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFYixNQUFNLFdBQVcsR0FBSSxNQUFjLEVBQUUsS0FBSyxDQUFBO1FBQzFDLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUVwRixrRkFBa0Y7UUFDbEYsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUssRUFBUSxDQUFBO1FBRTlELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQzFCLElBQUksRUFBRSxHQUFHO1lBQ1QsT0FBTyxFQUFFLGFBQWE7WUFDdEIsS0FBSyxFQUFFLGFBQWE7WUFDcEIsR0FBRyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsTUFBTSxFQUFFLFVBQVU7U0FDbkIsQ0FBQyxDQUFBO1FBRUYsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQUVELFNBQVMseUJBQXlCLENBSWhDLFVBQXNCLEVBQ3RCLElBQVU7UUFFVixTQUFTLHFCQUFxQjtZQXdYNUIsT0FBTyxDQUFDLENBQ04sR0FBUSxFQUNSLE1BQWMsRUFDZCxNQUFVLEVBQ1Ysa0JBQW9ELEVBQ3BELEVBQUU7Z0JBQ0YsTUFBTSxRQUFRLEdBQUksTUFBYyxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUE7Z0JBQ2pELE1BQU0sYUFBYSxHQUFHLGtCQUFrQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUE7Z0JBQ25HLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0JBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO29CQUNqQixFQUFFLEVBQUUsR0FBRyxVQUFVLElBQUksR0FBRyxFQUFFO29CQUMxQixVQUFVO29CQUNWLElBQUk7b0JBQ0osTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLFVBQVU7aUJBQ1gsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sR0FBRyxDQUFBO1lBQ1osQ0FBQyxDQUFRLENBQUE7UUFDWCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBVyxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELFNBQVMsZ0JBQWdCLENBQTRCLFVBQXNCO1FBQ3pFLE1BQU0sS0FBSyxHQUFHLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM1RCxNQUFNLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFFaEUsT0FBTztZQUNMLFVBQVU7WUFDVjs7OztlQUlHO1lBQ0gsS0FBSztZQUNMOzs7O2VBSUc7WUFDSCxPQUFPO1NBQ0MsQ0FBQTtJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsZ0JBQWdCO0tBQ2pCLENBQUE7QUFDSCxDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
package/src/RequestContext.ts
CHANGED
|
@@ -8,7 +8,7 @@ export type Locale = typeof Locale.Type
|
|
|
8
8
|
|
|
9
9
|
export class LocaleRef extends Context.Reference("Locale", { defaultValue: (): Locale => "en" }) {}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const _RequestContext = S.Struct({
|
|
12
12
|
span: S.Struct({
|
|
13
13
|
traceId: S.String,
|
|
14
14
|
spanId: S.String,
|
|
@@ -20,20 +20,10 @@ class _RequestContext extends S.Opaque<_RequestContext>()(S.Struct({
|
|
|
20
20
|
namespace: NonEmptyString255,
|
|
21
21
|
/** @deprecated */
|
|
22
22
|
userProfile: S.optional(S.Struct({ sub: UserProfileId })) //
|
|
23
|
-
})
|
|
24
|
-
// static Tag = Context.Tag<RequestContext>()
|
|
25
|
-
|
|
26
|
-
static toMonitoring(this: void, self: RequestContext) {
|
|
27
|
-
return {
|
|
28
|
-
operationName: self.name,
|
|
29
|
-
locale: self.locale
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
23
|
+
})
|
|
33
24
|
|
|
34
|
-
// codegen:start {preset: modelFacade, className: _RequestContext, schema: S}
|
|
35
|
-
|
|
36
|
-
export class RequestContext extends S.OpaqueFacadeClass<
|
|
25
|
+
// codegen:start {preset: modelFacade, className: _RequestContext, schema: S, base: true}
|
|
26
|
+
class __RequestContext extends S.OpaqueFacade<
|
|
37
27
|
RequestContext,
|
|
38
28
|
RequestContext.Encoded,
|
|
39
29
|
RequestContext.Make,
|
|
@@ -42,6 +32,16 @@ export class RequestContext extends S.OpaqueFacadeClass<
|
|
|
42
32
|
>()(_RequestContext) {}
|
|
43
33
|
// codegen:end
|
|
44
34
|
|
|
35
|
+
// eslint-disable-next-line typescript/no-unsafe-declaration-merging
|
|
36
|
+
export class RequestContext extends __RequestContext {
|
|
37
|
+
static toMonitoring(this: void, self: RequestContext) {
|
|
38
|
+
return {
|
|
39
|
+
operationName: self.name,
|
|
40
|
+
locale: self.locale
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
45
|
export const spanAttributes = (ctx: Pick<RequestContext, "locale" | "namespace"> & Partial<RequestContext>) => ({
|
|
46
46
|
"code.function.name": ctx.name,
|
|
47
47
|
"app.locale": ctx.locale,
|
package/src/Schema/Class.ts
CHANGED
|
@@ -4,7 +4,9 @@ import * as Effect from "effect/Effect"
|
|
|
4
4
|
import * as Option from "effect/Option"
|
|
5
5
|
import * as S from "effect/Schema"
|
|
6
6
|
import * as SchemaAST from "effect/SchemaAST"
|
|
7
|
+
import * as SchemaGetter from "effect/SchemaGetter"
|
|
7
8
|
import * as SchemaIssue from "effect/SchemaIssue"
|
|
9
|
+
import * as SchemaTransformation from "effect/SchemaTransformation"
|
|
8
10
|
import { copyOrigin } from "../utils.ts"
|
|
9
11
|
import { concurrencyUnbounded } from "./ext.ts"
|
|
10
12
|
import * as SchemaParser from "./SchemaParser.ts"
|
|
@@ -364,6 +366,67 @@ type OpaqueFacadeInput<DecodingServices, EncodingServices> = S.Top & {
|
|
|
364
366
|
readonly EncodingServices: EncodingServices
|
|
365
367
|
}
|
|
366
368
|
|
|
369
|
+
type OpaqueClassFacadeInput<DecodingServices, EncodingServices> =
|
|
370
|
+
& OpaqueFacadeInput<
|
|
371
|
+
DecodingServices,
|
|
372
|
+
EncodingServices
|
|
373
|
+
>
|
|
374
|
+
& (abstract new(...args: Array<never>) => unknown)
|
|
375
|
+
|
|
376
|
+
type PrototypeFunction = Function & { prototype: object }
|
|
377
|
+
|
|
378
|
+
const ClassAnnotationId = "~effect/Schema/Class"
|
|
379
|
+
|
|
380
|
+
const getOwnOrInheritedPropertyDescriptor = (value: object, property: PropertyKey): PropertyDescriptor | undefined => {
|
|
381
|
+
let current: object | null = value
|
|
382
|
+
while (current !== null) {
|
|
383
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, property)
|
|
384
|
+
if (descriptor !== undefined) return descriptor
|
|
385
|
+
current = Object.getPrototypeOf(current)
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const isClassSchemaConstructor = (value: unknown): value is PrototypeFunction => {
|
|
390
|
+
if (typeof value !== "function") return false
|
|
391
|
+
const ast = (value as { readonly ast?: unknown }).ast
|
|
392
|
+
return SchemaAST.isAST(ast) && SchemaAST.isDeclaration(ast) && ast.annotations?.[ClassAnnotationId] !== undefined
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
const getFacadeClassSchema = (schema: OpaqueFacadeInput<any, any>): PrototypeFunction | undefined => {
|
|
396
|
+
if (isClassSchemaConstructor(schema)) return schema
|
|
397
|
+
const target = "to" in schema ? schema.to : undefined
|
|
398
|
+
return isClassSchemaConstructor(target) ? target : undefined
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const makePublicClassTransformation = (Public: PrototypeFunction) =>
|
|
402
|
+
new SchemaTransformation.Transformation<any, any, never, never>(
|
|
403
|
+
SchemaGetter.transform((input) => Reflect.construct(Public, [input], Public)),
|
|
404
|
+
SchemaGetter.passthrough()
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
const makeFacadeClassAst = (
|
|
408
|
+
schema: OpaqueFacadeInput<any, any>,
|
|
409
|
+
originalAst: SchemaAST.AST,
|
|
410
|
+
Public: PrototypeFunction
|
|
411
|
+
): SchemaAST.AST => {
|
|
412
|
+
if (SchemaAST.isDeclaration(schema.ast)) {
|
|
413
|
+
const schemaEncoding = schema.ast.encoding ?? []
|
|
414
|
+
if (schemaEncoding.length > 0) {
|
|
415
|
+
return new SchemaAST.Declaration(
|
|
416
|
+
schema.ast.typeParameters,
|
|
417
|
+
schema.ast.run,
|
|
418
|
+
schema.ast.annotations,
|
|
419
|
+
schema.ast.checks,
|
|
420
|
+
[new SchemaAST.Link(schemaEncoding[0]!.to, makePublicClassTransformation(Public)), ...schemaEncoding.slice(1)],
|
|
421
|
+
schema.ast.context,
|
|
422
|
+
schema.ast.encodingChecks
|
|
423
|
+
)
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
return schema.rebuild(originalAst).ast
|
|
428
|
+
}
|
|
429
|
+
|
|
367
430
|
// Carry the schema's own statics, dropping the generic `S.Top` machinery and
|
|
368
431
|
// `prototype`. EXCEPT `to`: models compose each other via `X.to.fields` /
|
|
369
432
|
// `X.to.copy` at definition time, so it must survive on the facade.
|
|
@@ -425,7 +488,7 @@ export interface OpaqueFacade<
|
|
|
425
488
|
MakeIn
|
|
426
489
|
>
|
|
427
490
|
{
|
|
428
|
-
new(
|
|
491
|
+
new(_: never): Brand
|
|
429
492
|
readonly copy: ReturnType<typeof copyOrigin<new(_: MakeIn) => Self>>
|
|
430
493
|
// NOTE: `fields` / `mapFields` are intentionally NOT redeclared here. They are
|
|
431
494
|
// carried (precise) from the underlying schema via `OpaqueFacadeStatics`. A wide
|
|
@@ -433,21 +496,7 @@ export interface OpaqueFacade<
|
|
|
433
496
|
// resolution and erase field precision in `Q.project(X.mapFields(...))`.
|
|
434
497
|
}
|
|
435
498
|
|
|
436
|
-
export
|
|
437
|
-
Self,
|
|
438
|
-
Encoded,
|
|
439
|
-
MakeIn,
|
|
440
|
-
DecodingServices = never,
|
|
441
|
-
EncodingServices = DecodingServices,
|
|
442
|
-
Brand = {}
|
|
443
|
-
>() {
|
|
444
|
-
return <SchemaS extends OpaqueFacadeInput<DecodingServices, EncodingServices>>(
|
|
445
|
-
schema: SchemaS
|
|
446
|
-
): OpaqueFacade<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand> & OpaqueFacadeStatics<SchemaS> =>
|
|
447
|
-
schema as SchemaS & OpaqueFacade<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand>
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
export interface OpaqueFacadeClass<
|
|
499
|
+
export interface OpaqueClassFacade<
|
|
451
500
|
Self,
|
|
452
501
|
Encoded,
|
|
453
502
|
MakeIn,
|
|
@@ -470,11 +519,9 @@ export interface OpaqueFacadeClass<
|
|
|
470
519
|
{
|
|
471
520
|
new(...args: OpaqueFacadeConstructorArgs<MakeIn>): Brand
|
|
472
521
|
readonly copy: ReturnType<typeof copyOrigin<new(_: MakeIn) => Self>>
|
|
473
|
-
// NOTE: `fields` / `mapFields` intentionally not redeclared — carried precise
|
|
474
|
-
// from the underlying schema via `OpaqueFacadeStatics` (see OpaqueFacade above).
|
|
475
522
|
}
|
|
476
523
|
|
|
477
|
-
export function
|
|
524
|
+
export function OpaqueFacade<
|
|
478
525
|
Self,
|
|
479
526
|
Encoded,
|
|
480
527
|
MakeIn,
|
|
@@ -482,22 +529,44 @@ export function OpaqueFacadeClass<
|
|
|
482
529
|
EncodingServices = DecodingServices,
|
|
483
530
|
Brand = {}
|
|
484
531
|
>() {
|
|
485
|
-
|
|
532
|
+
function facade<SchemaS extends OpaqueClassFacadeInput<DecodingServices, EncodingServices>>(
|
|
486
533
|
schema: SchemaS
|
|
487
534
|
):
|
|
488
|
-
&
|
|
489
|
-
& OpaqueFacadeStatics<SchemaS>
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
535
|
+
& OpaqueClassFacade<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand>
|
|
536
|
+
& OpaqueFacadeStatics<SchemaS>
|
|
537
|
+
function facade<SchemaS extends OpaqueFacadeInput<DecodingServices, EncodingServices>>(
|
|
538
|
+
schema: SchemaS
|
|
539
|
+
):
|
|
540
|
+
& OpaqueFacade<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand>
|
|
541
|
+
& OpaqueFacadeStatics<SchemaS>
|
|
542
|
+
function facade(schema: OpaqueFacadeInput<DecodingServices, EncodingServices>) {
|
|
543
|
+
const Base = getFacadeClassSchema(schema)
|
|
544
|
+
if (Base !== undefined) {
|
|
545
|
+
const astCache = new WeakMap<object, SchemaAST.AST>()
|
|
546
|
+
const originalAstDescriptor = getOwnOrInheritedPropertyDescriptor(Base, "ast")
|
|
547
|
+
|
|
548
|
+
return class extends (Base as any) {
|
|
549
|
+
static get ast(): SchemaAST.AST {
|
|
550
|
+
let cached = astCache.get(this)
|
|
551
|
+
if (cached !== undefined) return cached
|
|
552
|
+
|
|
553
|
+
const originalAst = originalAstDescriptor?.get?.call(this) as SchemaAST.AST
|
|
554
|
+
cached = makeFacadeClassAst(schema, originalAst, this)
|
|
555
|
+
astCache.set(this, cached)
|
|
556
|
+
return cached
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
494
561
|
class Facade {}
|
|
495
562
|
return Object.setPrototypeOf(Facade, schema)
|
|
496
563
|
}
|
|
564
|
+
|
|
565
|
+
return facade
|
|
497
566
|
}
|
|
498
567
|
|
|
499
568
|
/**
|
|
500
|
-
* Like {@link
|
|
569
|
+
* Like class-schema {@link OpaqueFacade}, but for error models (`TaggedErrorClass` /
|
|
501
570
|
* `ErrorClass`). The decoded instance type carries `Cause.YieldableError`, so
|
|
502
571
|
* `yield* new MyError(...)`, `Effect.fail(myError)`, and `instanceof` all keep
|
|
503
572
|
* working through the facade — the runtime `_X` is the real error class (the
|
|
@@ -525,7 +594,7 @@ export interface OpaqueErrorFacadeClass<
|
|
|
525
594
|
MakeIn
|
|
526
595
|
>
|
|
527
596
|
{
|
|
528
|
-
// YieldableError (not Self) on the constructed instance — like
|
|
597
|
+
// YieldableError (not Self) on the constructed instance — like class-schema OpaqueFacade's
|
|
529
598
|
// `new(): Brand`, the data type comes from the declaration-merged `interface X`,
|
|
530
599
|
// so `Self` must NOT appear here (would recurse). Merging `X & YieldableError`
|
|
531
600
|
// makes `yield* new X()` / `Effect.fail` / `instanceof` work without losing data.
|
|
@@ -541,13 +610,20 @@ export function OpaqueErrorFacadeClass<
|
|
|
541
610
|
EncodingServices = DecodingServices,
|
|
542
611
|
Brand = {}
|
|
543
612
|
>() {
|
|
544
|
-
return <SchemaS extends
|
|
613
|
+
return <SchemaS extends OpaqueClassFacadeInput<DecodingServices, EncodingServices>>(
|
|
545
614
|
schema: SchemaS
|
|
546
615
|
):
|
|
547
616
|
& OpaqueErrorFacadeClass<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand>
|
|
548
617
|
& OpaqueFacadeStatics<SchemaS> =>
|
|
549
618
|
{
|
|
550
|
-
|
|
551
|
-
|
|
619
|
+
type FacadeSchema =
|
|
620
|
+
& OpaqueErrorFacadeClass<Self, Encoded, MakeIn, DecodingServices, EncodingServices, Brand>
|
|
621
|
+
& OpaqueFacadeStatics<SchemaS>
|
|
622
|
+
|
|
623
|
+
if (typeof schema === "function") {
|
|
624
|
+
return schema as SchemaS & FacadeSchema
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
throw new TypeError("OpaqueErrorFacadeClass requires a class schema")
|
|
552
628
|
}
|
|
553
629
|
}
|
package/src/Schema.ts
CHANGED
|
@@ -110,7 +110,7 @@ export { withDecodingDefaultTypeKey } from "effect/Schema"
|
|
|
110
110
|
export * from "effect/Schema"
|
|
111
111
|
|
|
112
112
|
export * from "./Schema/Class.ts"
|
|
113
|
-
export { Class, ErrorClass, Opaque, OpaqueErrorFacadeClass, OpaqueFacade,
|
|
113
|
+
export { Class, ErrorClass, Opaque, OpaqueErrorFacadeClass, OpaqueFacade, OpaqueShape, OpaqueType, TaggedClass, TaggedErrorClass } from "./Schema/Class.ts"
|
|
114
114
|
|
|
115
115
|
export { fromBrand, nominal } from "./Schema/brand.ts"
|
|
116
116
|
export { Array, Boolean, Date, DateFromString, DateValid, Finite, Literals, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.ts"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// JSON / Body return-type overrides (`any` -> `unknown`), isolated from
|
|
2
|
+
// `builtin.ts` so consumers that source-link this package (e.g. an embedded
|
|
3
|
+
// Effect-source setup) can toggle them off. As a `declare global`, the override
|
|
4
|
+
// is program-wide: in linked mode it leaks into source-linked Effect and breaks
|
|
5
|
+
// Effect's own `JSON.parse(...)` / `response.json()` call sites (TS2322
|
|
6
|
+
// `unknown` vs `Json`). `builtin.ts` triple-slash-references this file, so
|
|
7
|
+
// normal builds keep the override.
|
|
8
|
+
declare global {
|
|
9
|
+
interface JSON {
|
|
10
|
+
/**
|
|
11
|
+
* Converts a JavaScript Object Notation (JSON) string into an object.
|
|
12
|
+
* @param text A valid JSON string.
|
|
13
|
+
* @param reviver A function that transforms the results. This function is called for each member of the object.
|
|
14
|
+
* If a member contains nested objects, the nested objects are transformed before the parent object is.
|
|
15
|
+
*/
|
|
16
|
+
parse(text: string, reviver?: (this: any, key: string, value: any) => any): unknown
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface Body {
|
|
20
|
+
json(): Promise<unknown>
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export {}
|
package/src/builtin.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// oxlint-disable-next-line typescript/triple-slash-reference
|
|
2
|
+
/// <reference path="./builtin-json.d.ts" />
|
|
1
3
|
import type { NonEmptyArray, NonEmptyReadonlyArray } from "effect/Array"
|
|
2
4
|
|
|
3
5
|
declare global {
|
|
@@ -17,34 +19,27 @@ declare global {
|
|
|
17
19
|
split(separator: string | RegExp, limit?: number): [string, ...string[]]
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* Converts a JavaScript Object Notation (JSON) string into an object.
|
|
23
|
-
* @param text A valid JSON string.
|
|
24
|
-
* @param reviver A function that transforms the results. This function is called for each member of the object.
|
|
25
|
-
* If a member contains nested objects, the nested objects are transformed before the parent object is.
|
|
26
|
-
*/
|
|
27
|
-
parse(text: string, reviver?: (this: any, key: string, value: any) => any): unknown
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface Body {
|
|
31
|
-
json(): Promise<unknown>
|
|
32
|
-
}
|
|
22
|
+
// JSON.parse / Body.json overrides live in ./builtin-json.d.ts (referenced
|
|
23
|
+
// above) so a source-linked consumer can disable them in linked mode.
|
|
33
24
|
|
|
34
25
|
interface Array<T> {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
// Conditional return instead of a `this`-typed overload: a `this` overload
|
|
27
|
+
// is selected-then-rejected on union-of-array receivers (TS2684), poisoning
|
|
28
|
+
// foreign code like `(readonly A[] | readonly B[]).map(...)`. A single
|
|
29
|
+
// conditional-return signature refines NonEmpty without a `this` param.
|
|
30
|
+
map<U>(
|
|
31
|
+
callbackfn: (value: T, index: number, array: T[]) => U,
|
|
32
|
+
thisArg?: any
|
|
33
|
+
): this extends NonEmptyArray<any> ? NonEmptyArray<U> : U[]
|
|
39
34
|
}
|
|
40
35
|
interface ReadonlyArray<T> {
|
|
41
36
|
// Subsequent property declarations must have the same type. Property 'length' must be of type 'number', but here has type 'NonNegativeInt'.
|
|
42
37
|
// readonly length: NonNegativeInt
|
|
43
38
|
|
|
44
|
-
map<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
): NonEmptyReadonlyArray<
|
|
39
|
+
map<U>(
|
|
40
|
+
callbackfn: (value: T, index: number, array: readonly T[]) => U,
|
|
41
|
+
thisArg?: any
|
|
42
|
+
): this extends NonEmptyReadonlyArray<any> ? NonEmptyReadonlyArray<U> : U[]
|
|
48
43
|
}
|
|
49
44
|
}
|
|
50
45
|
|
package/src/client/clientFor.ts
CHANGED
|
@@ -99,6 +99,7 @@ export interface RequestHandlerWithInput<I, A, E, R, Request extends Req, Id ext
|
|
|
99
99
|
id: Id
|
|
100
100
|
options?: ClientForOptions
|
|
101
101
|
Request: Request
|
|
102
|
+
queryKeyProjectionHash?: string
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
/** Type alias: a no-input handler is simply `RequestHandlerWithInput<void, …>`. */
|
package/src/client/makeClient.ts
CHANGED
|
@@ -54,14 +54,13 @@ type InvalidationResources = Record<string, Record<string, unknown>>
|
|
|
54
54
|
* An invalidation instruction returned from `invalidatesQueries`. One of:
|
|
55
55
|
* - a raw query key (`ReadonlyArray<string>`)
|
|
56
56
|
* - an RPC handler object (`{ id, options? }`) — query key derived from `id`
|
|
57
|
-
* -
|
|
57
|
+
* - a compatibility `{ filters: { queryKey }, options? }` shape
|
|
58
58
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* adapter narrows them via the `InvalidationEntry` alias.
|
|
59
|
+
* Predicate filters are intentionally not represented: atom invalidation is keyed by
|
|
60
|
+
* concrete query keys.
|
|
62
61
|
*/
|
|
63
62
|
export type InvalidateQueryInstruction<
|
|
64
|
-
Filters =
|
|
63
|
+
Filters = { readonly queryKey: ReadonlyArray<unknown> },
|
|
65
64
|
Options = Record<string, unknown>
|
|
66
65
|
> =
|
|
67
66
|
| ReadonlyArray<string>
|
|
@@ -70,7 +69,7 @@ export type InvalidateQueryInstruction<
|
|
|
70
69
|
readonly options?: ClientForOptions
|
|
71
70
|
}
|
|
72
71
|
| {
|
|
73
|
-
readonly filters
|
|
72
|
+
readonly filters: Filters
|
|
74
73
|
readonly options?: Options
|
|
75
74
|
}
|
|
76
75
|
|