@effect-app/infra 2.18.0 → 2.19.1

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.19.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 4a52411: add overrides for repo
8
+
9
+ ## 2.19.0
10
+
11
+ ### Minor Changes
12
+
13
+ - update
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+ - effect-app@2.11.0
19
+
3
20
  ## 2.18.0
4
21
 
5
22
  ### Minor Changes
@@ -25,7 +25,8 @@ const makeRepo = (itemType, schema, options) => _effectApp.Effect.gen(function*
25
25
  ...e,
26
26
  _etag
27
27
  }), options.idKey ?? "id");
28
- const r = yield* mkRepo.make(options);
28
+ let r = yield* mkRepo.make(options);
29
+ if (options.overrides) r = options.overrides(r);
29
30
  const repo = (0, _ext.extendRepo)(r);
30
31
  return repo;
31
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"makeRepo.cjs","names":["_effectApp","require","_ext","_internal","makeRepo","itemType","schema","options","Effect","gen","mkRepo","makeRepoInternal","jitM","pm","e","_etag","idKey","r","make","repo","extendRepo","exports"],"sources":["../../../src/Model/Repository/makeRepo.ts"],"sourcesContent":[null],"mappings":";;;;;;AAUA,IAAAA,UAAA,GAAAC,OAAA;AAIA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAfA;AACA;AACA;AACA;AACA;;AAoDA;;;;;;;AAOO,MAAMG,QAAQ,GAwCjBA,CAYFC,QAAkB,EAClBC,MAA+B,EAC/BC,OAAkH,KAElHC,iBAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,MAAM,GAAG,IAAAC,0BAAgB,GAAO,CACpCN,QAAQ,EACRC,MAAM,EACNC,OAAO,EAAEK,IAAI,GAAIC,EAAE,IAAKN,OAAO,CAACK,IAAK,CAACC,EAAE,CAAC,GAAIA,EAAE,IAAKA,EAAE,EACtD,CAACC,CAAC,EAAEC,KAAK,MAAM;IAAE,GAAGD,CAAC;IAAEC;EAAK,CAAE,CAAC,EAC/BR,OAAO,CAACS,KAAK,IAAI,IAAW,CAC7B;EACD,MAAMC,CAAC,GAAG,OAAOP,MAAM,CAACQ,IAAI,CAA8BX,OAAc,CAAC;EACzE,MAAMY,IAAI,GAAG,IAAAC,eAAU,EAACH,CAAC,CAAC;EAC1B,OAAOE,IAAI;AACb,CAAC,CAAC;AAAAE,OAAA,CAAAjB,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"file":"makeRepo.cjs","names":["_effectApp","require","_ext","_internal","makeRepo","itemType","schema","options","Effect","gen","mkRepo","makeRepoInternal","jitM","pm","e","_etag","idKey","r","make","overrides","repo","extendRepo","exports"],"sources":["../../../src/Model/Repository/makeRepo.ts"],"sourcesContent":[null],"mappings":";;;;;;AAUA,IAAAA,UAAA,GAAAC,OAAA;AAIA,IAAAC,IAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAfA;AACA;AACA;AACA;AACA;;AA2DA;;;;;;;AAOO,MAAMG,QAAQ,GAwCjBA,CAYFC,QAAkB,EAClBC,MAAqC,EACrCC,OAEC,KAEDC,iBAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,MAAM,GAAG,IAAAC,0BAAgB,GAAO,CACpCN,QAAQ,EACRC,MAAM,EACNC,OAAO,EAAEK,IAAI,GAAIC,EAAE,IAAKN,OAAO,CAACK,IAAK,CAACC,EAAE,CAAC,GAAIA,EAAE,IAAKA,EAAE,EACtD,CAACC,CAAC,EAAEC,KAAK,MAAM;IAAE,GAAGD,CAAC;IAAEC;EAAK,CAAE,CAAC,EAC/BR,OAAO,CAACS,KAAK,IAAI,IAAW,CAC7B;EACD,IAAIC,CAAC,GAAG,OAAOP,MAAM,CAACQ,IAAI,CAA8BX,OAAc,CAAC;EACvE,IAAIA,OAAO,CAACY,SAAS,EAAEF,CAAC,GAAGV,OAAO,CAACY,SAAS,CAACF,CAAC,CAAC;EAC/C,MAAMG,IAAI,GAAG,IAAAC,eAAU,EAACJ,CAAC,CAAC;EAC1B,OAAOG,IAAI;AACb,CAAC,CAAC;AAAAE,OAAA,CAAAlB,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -3,7 +3,8 @@ import { Effect } from "effect-app";
3
3
  import type { StoreConfig, StoreMaker } from "../../Store.js";
4
4
  import type { FieldValues } from "../filter/types.js";
5
5
  import type { ExtendedRepository } from "./ext.js";
6
- export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encoded, T, Evt = never, RPublish = never, E = never, RInitial = never, RCtx = never> {
6
+ import type { Repository } from "./service.js";
7
+ export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encoded extends FieldValues, T, ItemType extends string, Evt = never, RPublish = never, E = never, RInitial = never, RCtx = never, RSchema = never> {
7
8
  /**
8
9
  * Specify the idKey of the Type side, if it's different from the default "id".
9
10
  * Does not change the Encoded side, which is always "id" to support database drivers.
@@ -31,6 +32,7 @@ export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encode
31
32
  * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source.
32
33
  */
33
34
  schemaContext?: Context.Context<RCtx>;
35
+ overrides?: (repo: Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>) => Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>;
34
36
  }
35
37
  /**
36
38
  * Create a repository instance.
@@ -40,9 +42,9 @@ export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encode
40
42
  * @returns a Repository
41
43
  */
42
44
  export declare const makeRepo: {
43
- <ItemType extends string, RSchema, Encoded extends FieldValues, T, IdKey extends keyof T & keyof Encoded, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Schema<T, Encoded, RSchema>, options: RepositoryOptions<IdKey, Encoded, T, Evt, RPublish, E, RInitial, RCtx>): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>, E, RInitial | StoreMaker>;
45
+ <ItemType extends string, RSchema, Encoded extends FieldValues, T, IdKey extends keyof T & keyof Encoded, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Schema<T, Encoded, RSchema>, options: RepositoryOptions<IdKey, Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>, E, RInitial | StoreMaker>;
44
46
  <ItemType extends string, RSchema, Encoded extends FieldValues, T extends {
45
47
  id: unknown;
46
- }, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Schema<T, Encoded, RSchema>, options: Omit<RepositoryOptions<"id", Encoded, T, Evt, RPublish, E, RInitial, RCtx>, "idKey">): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish>, E, RInitial | StoreMaker>;
48
+ }, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Schema<T, Encoded, RSchema>, options: Omit<RepositoryOptions<"id", Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>, "idKey">): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish>, E, RInitial | StoreMaker>;
47
49
  };
48
50
  //# sourceMappingURL=makeRepo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeRepo.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/makeRepo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"makeRepo.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/makeRepo.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,10 @@ import { makeRepoInternal } from "./internal/internal.js";
15
15
  */
16
16
  export const makeRepo = (itemType, schema, options) => Effect.gen(function* () {
17
17
  const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
18
- const r = yield* mkRepo.make(options);
18
+ let r = yield* mkRepo.make(options);
19
+ if (options.overrides)
20
+ r = options.overrides(r);
19
21
  const repo = extendRepo(r);
20
22
  return repo;
21
23
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9tYWtlUmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELDBEQUEwRDtBQUMxRCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBTXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFJbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQXlDekQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQXdDakIsQ0FZRixRQUFrQixFQUNsQixNQUErQixFQUMvQixPQUFrSCxFQUNsSCxFQUFFLENBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQU8sQ0FDcEMsUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDdEQsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDL0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFXLENBQzdCLENBQUE7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUE4QixPQUFjLENBQUMsQ0FBQTtJQUN6RSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUMsQ0FBQSJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9tYWtlUmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELDBEQUEwRDtBQUMxRCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBTXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFJbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQWdEekQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQXdDakIsQ0FZRixRQUFrQixFQUNsQixNQUFxQyxFQUNyQyxPQUVDLEVBQ0QsRUFBRSxDQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixFQUFPLENBQ3BDLFFBQVEsRUFDUixNQUFNLEVBQ04sT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQ3RELENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQy9CLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBVyxDQUM3QixDQUFBO0lBQ0QsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBOEIsT0FBYyxDQUFDLENBQUE7SUFDdkUsSUFBSSxPQUFPLENBQUMsU0FBUztRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQyxDQUFBIn0=
@@ -56,15 +56,15 @@ declare const Operations_base: (abstract new (service: {
56
56
  update: (id: OperationId, progress: OperationProgress) => Effect.Effect<void, never, never>;
57
57
  }>) & {
58
58
  toLayer: {
59
- (): Layer.Layer<Operations, never, RequestFiberSet | OperationsRepo>;
59
+ (): Layer.Layer<Operations, never, OperationsRepo | RequestFiberSet>;
60
60
  <E_1, R_1>(eff: Effect.Effect<Omit<Operations, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer.Layer<Operations, E_1, R_1>;
61
61
  };
62
62
  toLayerScoped: {
63
- (): Layer.Layer<Operations, never, RequestFiberSet | OperationsRepo>;
63
+ (): Layer.Layer<Operations, never, OperationsRepo | RequestFiberSet>;
64
64
  <E_1, R_2>(eff: Effect.Effect<Context.TagClassShape<any, any>, E_1, R_2>): Layer.Layer<Operations, E_1, Exclude<R_2, Scope.Scope>>;
65
65
  };
66
66
  of: (service: Context.TagClassShape<any, any>) => Operations;
67
- make: Effect.Effect<Operations, never, RequestFiberSet | OperationsRepo>;
67
+ make: Effect.Effect<Operations, never, OperationsRepo | RequestFiberSet>;
68
68
  } & Context.Tag<Operations, Operations> & {
69
69
  cleanup: Effect.Effect<void[], never, Operations>;
70
70
  register: (title: S.NonEmptyString2k) => Effect.Effect<S.StringId, never, Scope.Scope | Operations>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "2.18.0",
3
+ "version": "2.19.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -13,7 +13,7 @@
13
13
  "proper-lockfile": "^4.1.2",
14
14
  "pure-rand": "6.1.0",
15
15
  "query-string": "^9.1.1",
16
- "effect-app": "2.10.0"
16
+ "effect-app": "2.11.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@azure/cosmos": "^4.1.1",
@@ -14,16 +14,19 @@ import type { FieldValues } from "../filter/types.js"
14
14
  import type { ExtendedRepository } from "./ext.js"
15
15
  import { extendRepo } from "./ext.js"
16
16
  import { makeRepoInternal } from "./internal/internal.js"
17
+ import type { Repository } from "./service.js"
17
18
 
18
19
  export interface RepositoryOptions<
19
20
  IdKey extends keyof T & keyof Encoded,
20
- Encoded,
21
+ Encoded extends FieldValues,
21
22
  T,
23
+ ItemType extends string,
22
24
  Evt = never,
23
25
  RPublish = never,
24
26
  E = never,
25
27
  RInitial = never,
26
- RCtx = never
28
+ RCtx = never,
29
+ RSchema = never
27
30
  > {
28
31
  /**
29
32
  * Specify the idKey of the Type side, if it's different from the default "id".
@@ -52,6 +55,10 @@ export interface RepositoryOptions<
52
55
  * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source.
53
56
  */
54
57
  schemaContext?: Context.Context<RCtx>
58
+
59
+ overrides?: (
60
+ repo: Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>
61
+ ) => Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>
55
62
  }
56
63
 
57
64
  /**
@@ -76,7 +83,7 @@ export const makeRepo: {
76
83
  >(
77
84
  itemType: ItemType,
78
85
  schema: S.Schema<T, Encoded, RSchema>,
79
- options: RepositoryOptions<IdKey, Encoded, T, Evt, RPublish, E, RInitial, RCtx>
86
+ options: RepositoryOptions<IdKey, Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>
80
87
  ): Effect.Effect<
81
88
  ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>,
82
89
  E,
@@ -95,7 +102,7 @@ export const makeRepo: {
95
102
  >(
96
103
  itemType: ItemType,
97
104
  schema: S.Schema<T, Encoded, RSchema>,
98
- options: Omit<RepositoryOptions<"id", Encoded, T, Evt, RPublish, E, RInitial, RCtx>, "idKey">
105
+ options: Omit<RepositoryOptions<"id", Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>, "idKey">
99
106
  ): Effect.Effect<
100
107
  ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish>,
101
108
  E,
@@ -103,7 +110,7 @@ export const makeRepo: {
103
110
  >
104
111
  } = <
105
112
  ItemType extends string,
106
- R,
113
+ RSchema,
107
114
  Encoded extends FieldValues,
108
115
  T,
109
116
  IdKey extends keyof T & keyof Encoded,
@@ -114,8 +121,10 @@ export const makeRepo: {
114
121
  RCtx = never
115
122
  >(
116
123
  itemType: ItemType,
117
- schema: S.Schema<T, Encoded, R>,
118
- options: Omit<RepositoryOptions<IdKey, Encoded, T, Evt, RPublish, E, RInitial, RCtx>, "idKey"> & { idKey?: IdKey }
124
+ schema: S.Schema<T, Encoded, RSchema>,
125
+ options: Omit<RepositoryOptions<IdKey, Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>, "idKey"> & {
126
+ idKey?: IdKey
127
+ }
119
128
  ) =>
120
129
  Effect.gen(function*() {
121
130
  const mkRepo = makeRepoInternal<Evt>()(
@@ -125,7 +134,8 @@ export const makeRepo: {
125
134
  (e, _etag) => ({ ...e, _etag }),
126
135
  options.idKey ?? "id" as any
127
136
  )
128
- const r = yield* mkRepo.make<RInitial, E, RPublish, RCtx>(options as any)
137
+ let r = yield* mkRepo.make<RInitial, E, RPublish, RCtx>(options as any)
138
+ if (options.overrides) r = options.overrides(r)
129
139
  const repo = extendRepo(r)
130
140
  return repo
131
141
  })
@@ -1 +1 @@
1
- {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;sBATP,KAAH;;;;;;GASY,QAAQ;;;;;;uDA8B3B,KAAK,CAAC,GAAG;;uBAzFY,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;uDAqIimB,KAAK,CAAC,GAAG;;uBAtIjnB,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;uDAqIuyE,KAAK,CAAC,GAAG;;uBAtIvzE,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;;;uBADP,MAAM,CA2BvB,GA1BP;uBAAqB,MAAM,CAAC,GAAG;;;;;;;;0GA0DgC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEM,MAAM,CAAC,MAAM;mBAgC1C,MA9BA,CAAC,GAAG,KA8BJ,MA5BD,CA4BC,MA5BM;mBA4BN,MA3BC,CAAE,GAAE,KAAM,MAAK,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACtD,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAE,MAAK;;;;;;6CAclD,MAAG,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;CA4BA,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAmBjB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterApi.test.d.ts","sourceRoot":"","sources":["../filterApi.test.ts"],"names":[],"mappings":""}