@effect-app/infra 0.210.10 → 0.211.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 (61) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/_cjs/services/RepositoryBase.cjs +15 -34
  3. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  4. package/_cjs/services/Store/Cosmos/query.cjs +0 -137
  5. package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
  6. package/_cjs/services/Store/Cosmos.cjs +5 -35
  7. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  8. package/_cjs/services/Store/Disk.cjs +0 -1
  9. package/_cjs/services/Store/Disk.cjs.map +1 -1
  10. package/_cjs/services/Store/Memory.cjs +0 -6
  11. package/_cjs/services/Store/Memory.cjs.map +1 -1
  12. package/_cjs/services/Store/service.cjs.map +1 -1
  13. package/_cjs/services/Store/utils.cjs +1 -106
  14. package/_cjs/services/Store/utils.cjs.map +1 -1
  15. package/dist/services/RepositoryBase.d.ts +3 -60
  16. package/dist/services/RepositoryBase.d.ts.map +1 -1
  17. package/dist/services/RepositoryBase.js +28 -42
  18. package/dist/services/Store/Cosmos/query.d.ts +1 -45
  19. package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
  20. package/dist/services/Store/Cosmos/query.js +1 -145
  21. package/dist/services/Store/Cosmos.d.ts.map +1 -1
  22. package/dist/services/Store/Cosmos.js +18 -61
  23. package/dist/services/Store/Disk.d.ts.map +1 -1
  24. package/dist/services/Store/Disk.js +1 -2
  25. package/dist/services/Store/Memory.d.ts.map +1 -1
  26. package/dist/services/Store/Memory.js +2 -10
  27. package/dist/services/Store/filterApi/query.d.ts +1 -1
  28. package/dist/services/Store/filterApi/query.d.ts.map +1 -1
  29. package/dist/services/Store/service.d.ts +1 -38
  30. package/dist/services/Store/service.d.ts.map +1 -1
  31. package/dist/services/Store/service.js +1 -1
  32. package/dist/services/Store/utils.d.ts +1 -6
  33. package/dist/services/Store/utils.d.ts.map +1 -1
  34. package/dist/services/Store/utils.js +3 -140
  35. package/dist/services/query/dsl.d.ts +2 -2
  36. package/dist/services/query/dsl.d.ts.map +1 -1
  37. package/package.json +4 -14
  38. package/src/services/RepositoryBase.ts +50 -75
  39. package/src/services/Store/Cosmos/query.ts +1 -203
  40. package/src/services/Store/Cosmos.ts +38 -135
  41. package/src/services/Store/Disk.ts +0 -1
  42. package/src/services/Store/Memory.ts +2 -17
  43. package/src/services/Store/Redis.ts.bak +2 -4
  44. package/src/services/Store/filterApi/query.ts +2 -2
  45. package/src/services/Store/service.ts +1 -35
  46. package/src/services/Store/utils.ts +3 -152
  47. package/src/services/query/dsl.ts +4 -4
  48. package/_cjs/filter.cjs +0 -363
  49. package/_cjs/filter.cjs.map +0 -1
  50. package/_cjs/services/Store/Cosmos.test.cjs +0 -55
  51. package/_cjs/services/Store/Cosmos.test.cjs.map +0 -1
  52. package/_cjs/services/Store/codeFilter.test.cjs +0 -63
  53. package/_cjs/services/Store/codeFilter.test.cjs.map +0 -1
  54. package/dist/filter.d.ts +0 -142
  55. package/dist/filter.d.ts.map +0 -1
  56. package/dist/filter.js +0 -248
  57. package/dist/services/Store/Cosmos.test.d.ts.map +0 -1
  58. package/dist/services/Store/codeFilter.test.d.ts.map +0 -1
  59. package/src/filter.ts +0 -420
  60. package/src/services/Store/Cosmos.test.ts +0 -94
  61. package/src/services/Store/codeFilter.test.ts +0 -166
package/src/filter.ts DELETED
@@ -1,420 +0,0 @@
1
- import type { FieldValues } from "./filter/types/fields.js"
2
- import type { FieldPath, FieldPathValue } from "./filter/types/path/eager.js"
3
- import type { SupportedValues, Where } from "./services/Store.js"
4
-
5
- /**
6
- * the function defaults to "eq", but has additional properties for notEq, in and notIn
7
- */
8
- export interface WhereFilter<TFieldValues extends FieldValues>
9
- extends ReturnType<typeof makeWhereFilter_<TFieldValues>>
10
- {}
11
- export function makeWhereFilter<TFieldValues extends FieldValues>() {
12
- const f = makeWhereFilter_<TFieldValues>()
13
- return f as WhereFilter<TFieldValues>
14
- }
15
-
16
- function makeHelpers<TFieldValues extends FieldValues>() {
17
- const helpers = makeHelpers_<TFieldValues>()
18
- return helpers as WhereHelpers<TFieldValues>
19
- }
20
-
21
- export interface WhereHelpers<TFieldValues extends FieldValues> extends ReturnType<typeof makeHelpers_<TFieldValues>> {}
22
-
23
- function makeHelpers_<TFieldValues extends FieldValues>() {
24
- type Paths = FieldPath<TFieldValues>
25
- type Value<TFieldName extends Paths> = FieldPathValue<TFieldValues, TFieldName>
26
-
27
- return {
28
- in<TFieldName extends Paths, V extends Value<TFieldName>>(
29
- this: void,
30
- path: TFieldName,
31
- value: readonly V[]
32
- ) {
33
- return { key: path, value, t: "in" as const }
34
- },
35
- notIn<TFieldName extends Paths, V extends Value<TFieldName>>(
36
- this: void,
37
- path: TFieldName,
38
- value: readonly V[]
39
- ) {
40
- return { key: path, value, t: "not-in" as const }
41
- },
42
- includes<TFieldName extends Paths, V extends Value<TFieldName>>(
43
- this: void,
44
- path: TFieldName,
45
- value: V
46
- ) {
47
- return { key: path, value, t: "includes" as const }
48
- },
49
- notIncludes<TFieldName extends Paths, V extends Value<TFieldName>>(
50
- this: void,
51
- path: TFieldName,
52
- value: V
53
- ) {
54
- return { key: path, value, t: "not-includes" as const }
55
- },
56
- eq<TFieldName extends Paths, V extends Value<TFieldName>>(
57
- this: void,
58
- path: TFieldName,
59
- value: V
60
- ) {
61
- return { key: path, value, t: "eq" as const }
62
- },
63
- notEq<TFieldName extends Paths, V extends Value<TFieldName>>(
64
- this: void,
65
- path: TFieldName,
66
- value: V
67
- ) {
68
- return { key: path, value, t: "not-eq" as const }
69
- },
70
- gt<TFieldName extends Paths, V extends Value<TFieldName>>(
71
- this: void,
72
- path: TFieldName,
73
- value: V
74
- ) {
75
- return { key: path, value, t: "gt" as const }
76
- },
77
- gte<TFieldName extends Paths, V extends Value<TFieldName>>(
78
- this: void,
79
- path: TFieldName,
80
- value: V
81
- ) {
82
- return { key: path, value, t: "gte" as const }
83
- },
84
- lt<TFieldName extends Paths, V extends Value<TFieldName>>(
85
- this: void,
86
- path: TFieldName,
87
- value: V
88
- ) {
89
- return { key: path, value, t: "lt" as const }
90
- },
91
- lte<TFieldName extends Paths, V extends Value<TFieldName>>(
92
- this: void,
93
- path: TFieldName,
94
- value: V
95
- ) {
96
- return { key: path, value, t: "lte" as const }
97
- }
98
- } satisfies Record<string, (...args: any[]) => Where>
99
- }
100
-
101
- function makeWhereFilter_<TFieldValues extends FieldValues>() {
102
- const helpers = makeHelpers<TFieldValues>()
103
- const f = Object.assign(helpers.eq, helpers)
104
- return f
105
- }
106
-
107
- export type WhereValue<
108
- T extends
109
- | "eq"
110
- | "not-eq"
111
- | "lt"
112
- | "gt"
113
- | "lte"
114
- | "gte"
115
- | "starts-with"
116
- | "ends-with"
117
- | "contains"
118
- | "not-starts-with"
119
- | "not-ends-with"
120
- | "not-contains"
121
- | "in"
122
- | "not-in"
123
- | "includes"
124
- | "not-includes",
125
- A, // extends SupportedValues,
126
- V extends A = A
127
- > = { t: T; v: V }
128
-
129
- export type WhereIn<T extends "in" | "not-in", V, Values extends readonly V[] = readonly V[]> = {
130
- t: T
131
- v: Values
132
- }
133
-
134
- export function $in<A extends SupportedValues, Values extends readonly A[]>(
135
- _: A,
136
- ...v: Values
137
- ): WhereIn<"in", A, Values> {
138
- return $$in(v)
139
- }
140
-
141
- export function $notIn<A extends SupportedValues, Values extends readonly A[]>(
142
- _: A,
143
- ...v: Values
144
- ): WhereIn<"not-in", A, Values> {
145
- return $$notIn(v)
146
- }
147
-
148
- export function $is<A, V extends A>(_: A, v: V): WhereValue<"eq", A, V> {
149
- return $$is(v)
150
- }
151
-
152
- export function $includes<A extends readonly any[], V extends A[number]>(_: A, v: V): WhereValue<"includes", A, V> {
153
- return $$includes(v)
154
- }
155
-
156
- export function $notIncludes<A extends readonly any[], V extends A[number]>(
157
- _: A,
158
- v: V
159
- ): WhereValue<"not-includes", A, V> {
160
- return $$notIncludes(v)
161
- }
162
-
163
- export function $isnt<A, V extends A>(_: A, v: V): WhereValue<"not-eq", A, V> {
164
- return $$isnt(v)
165
- }
166
-
167
- export function $gt<A, V extends A>(_: A, v: V): WhereValue<"gt", A, V> {
168
- return $$gt(v)
169
- }
170
-
171
- export function $gte<A, V extends A>(_: A, v: V): WhereValue<"gte", A, V> {
172
- return $$gte(v)
173
- }
174
-
175
- export function $lt<A, V extends A>(_: A, v: V): WhereValue<"lt", A, V> {
176
- return $$lt(v)
177
- }
178
-
179
- export function $lte<A, V extends A>(_: A, v: V): WhereValue<"lte", A, V> {
180
- return $$lte(v)
181
- }
182
-
183
- function $is__<V extends A, A>(v: V) {
184
- return (_: A) => $is(_, v)
185
- }
186
-
187
- function $isnt__<V extends A, A>(v: V) {
188
- return (_: A) => $isnt(_, v)
189
- }
190
-
191
- function $includes__<V extends A[number], A extends readonly any[]>(v: V) {
192
- return (_: A) => $includes(_, v)
193
- }
194
-
195
- function $notIncludes__<V extends A[number], A extends readonly any[]>(v: V) {
196
- return (_: A) => $notIncludes(_, v)
197
- }
198
-
199
- function $lt__<V extends A, A>(v: V) {
200
- return (_: A) => $lt(_, v)
201
- }
202
-
203
- function $lte__<V extends A, A>(v: V) {
204
- return (_: A) => $lte(_, v)
205
- }
206
-
207
- function $gt__<V extends A, A>(v: V) {
208
- return (_: A) => $gt(_, v)
209
- }
210
-
211
- function $gte__<V extends A, A>(v: V) {
212
- return (_: A) => $gte(_, v)
213
- }
214
-
215
- function $in__<A extends SupportedValues, Values extends readonly A[]>(
216
- ...v: Values
217
- ) {
218
- return (_: A) => $in(_, ...v)
219
- }
220
-
221
- function $notIn__<A extends SupportedValues, Values extends readonly A[]>(
222
- ...v: Values
223
- ) {
224
- return (_: A) => $notIn(_, ...v)
225
- }
226
-
227
- function $startsWith__<V extends A, A extends string>(v: V) {
228
- return (_: A) => $startsWith(_, v)
229
- }
230
-
231
- function $endsWith__<V extends A, A extends string>(v: V) {
232
- return (_: A) => $endsWith(_, v)
233
- }
234
-
235
- function $contains__<V extends A, A extends string>(v: V) {
236
- return (_: A) => $contains(_, v)
237
- }
238
-
239
- export const Filters = {
240
- is: $is__,
241
- isnt: $isnt__,
242
- in: $in__,
243
- notIn: $notIn__,
244
- gt: $gt__,
245
- gte: $gte__,
246
- lt: $lt__,
247
- lte: $lte__,
248
- contains: $contains__,
249
- endsWith: $endsWith__,
250
- startsWith: $startsWith__,
251
- includes: $includes__,
252
- notIncludes: $notIncludes__
253
- }
254
-
255
- export function $notStartsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"not-starts-with", A, V> {
256
- return $$notStartsWith(v)
257
- }
258
-
259
- export function $notEndsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"not-ends-with", A, V> {
260
- return $$notEndsWith(v)
261
- }
262
-
263
- export function $notContains<A extends string, V extends A>(_: A, v: V): WhereValue<"not-contains", A, V> {
264
- return $$notContains(v)
265
- }
266
-
267
- export function $startsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"starts-with", A, V> {
268
- return $$startsWith(v)
269
- }
270
-
271
- export function $endsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"ends-with", A, V> {
272
- return $$endsWith(v)
273
- }
274
-
275
- export function $contains<A extends string, V extends A>(_: A, v: V): WhereValue<"contains", A, V> {
276
- return $$contains(v)
277
- }
278
-
279
- function $$in<L extends readonly any[]>(v: L) {
280
- return { t: "in" as const, v }
281
- }
282
-
283
- function $$notIn<L extends readonly any[]>(v: L) {
284
- return { t: "not-in" as const, v }
285
- }
286
- function $$is<A>(v: A) {
287
- return { t: "eq" as const, v }
288
- }
289
- function $$isnt<A>(v: A) {
290
- return { t: "not-eq" as const, v }
291
- }
292
- function $$includes<A>(v: A) {
293
- return { t: "includes" as const, v }
294
- }
295
- function $$notIncludes<A>(v: A) {
296
- return { t: "not-includes" as const, v }
297
- }
298
-
299
- function $$lt<A>(v: A) {
300
- return { t: "lt" as const, v }
301
- }
302
-
303
- function $$lte<A>(v: A) {
304
- return { t: "lte" as const, v }
305
- }
306
- function $$gt<A>(v: A) {
307
- return { t: "gt" as const, v }
308
- }
309
-
310
- function $$gte<A>(v: A) {
311
- return { t: "gte" as const, v }
312
- }
313
-
314
- function $$contains<A extends string>(v: A) {
315
- return { t: "contains" as const, v }
316
- }
317
- function $$startsWith<A extends string>(v: A) {
318
- return { t: "starts-with" as const, v }
319
- }
320
- function $$endsWith<A extends string>(v: A) {
321
- return { t: "ends-with" as const, v }
322
- }
323
-
324
- function $$notContains<A extends string>(v: A) {
325
- return { t: "not-contains" as const, v }
326
- }
327
- function $$notStartsWith<A extends string>(v: A) {
328
- return { t: "not-starts-with" as const, v }
329
- }
330
- function $$notEndsWith<A extends string>(v: A) {
331
- return { t: "not-ends-with" as const, v }
332
- }
333
-
334
- type ValueType<V> = {
335
- t: "in" | "not-in"
336
- v: readonly V[]
337
- } | { t: "eq" | "not-eq"; v: V }
338
-
339
- type TType<T> = T extends ValueType<any> ? T["t"] : never
340
- type VType<T> = T extends ValueType<any> ? T["v"] : never
341
-
342
- function f(p: string, b: any) {
343
- if (typeof b === "function") b = b(undefined)
344
- const obj = typeof b === "object" && b !== null
345
- return makeFilter(p, obj ? b.v : b, obj ? b.t ?? "eq" : "eq")
346
- }
347
-
348
- function makeFilter<T extends "in" | "not-in" | "eq" | "not-eq">(path: string, value: any, t: T) {
349
- return { key: path, t, value }
350
- }
351
-
352
- type FIL<S, K extends string, T extends "in" | "not-in" | "eq" | "not-eq", V> = {
353
- key: K
354
- t: T
355
- value: V
356
- readonly S: S
357
- }
358
-
359
- export function makeFilters<T extends FieldValues>() {
360
- type Paths = FieldPath<T>
361
- type Value<TFieldName extends Paths> = FieldPathValue<T, TFieldName>
362
-
363
- function test<
364
- TFieldName extends Paths,
365
- A extends Value<TFieldName>,
366
- Val
367
- >(
368
- path: TFieldName,
369
- value: (v: A) => Val
370
- ): FIL<T, string, TType<Val>, VType<Val>>
371
- function test<
372
- TFieldName extends Paths,
373
- A extends Value<TFieldName>
374
- >(
375
- path: TFieldName,
376
- value: A
377
- ): FIL<T, string, "eq", A>
378
- function test(p: string, v: any) {
379
- return f(p, v) as any
380
- }
381
- return test
382
- }
383
-
384
- // export function makeFilter<TFieldValues extends FieldValues>() {
385
- // const f = makeFilter_<TFieldValues>()
386
- // return f as WhereFilterHelper<TFieldValues>
387
- // }
388
-
389
- // export interface WhereFilterHelper<TFieldValues extends FieldValues> extends ReturnType<typeof makeFilter_<TFieldValues>> {}
390
-
391
- // function makeFilter_<TFieldValues extends FieldValues>() {
392
- // function eq<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
393
- // path: TFieldName,
394
- // value: V
395
- // ) {
396
- // return { key: path, value, t: "eq" as const }
397
- // }
398
- // const f = Object.assign(eq satisfies (...args: any[]) => Where, {
399
- // in<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
400
- // path: TFieldName,
401
- // value: readonly V[]
402
- // ) {
403
- // return { key: path, value, t: "in" as const }
404
- // },
405
- // notIn<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
406
- // path: TFieldName,
407
- // value: readonly V[]
408
- // ) {
409
- // return { key: path, value, t: "not-in" as const }
410
- // },
411
- // eq,
412
- // notEq<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
413
- // path: TFieldName,
414
- // value: V
415
- // ) {
416
- // return { key: path, value, t: "not-eq" as const }
417
- // }
418
- // } satisfies Record<string, (...args: any[]) => Where>)
419
- // return f
420
- // }
@@ -1,94 +0,0 @@
1
- import type { StoreWhereFilter, Where } from "@effect-app/infra/services/Store"
2
- import { Filters, makeFilters } from "../../filter.js"
3
- import { buildWhereCosmosQuery } from "./Cosmos/query.js"
4
-
5
- const f_ = makeFilters<Something>()
6
- export type SomethingWhereFilter = typeof f_
7
-
8
- export function makeSomethingFilter_(filter: (f: SomethingWhereFilter) => StoreWhereFilter) {
9
- return filter(f_)
10
- }
11
-
12
- export function somethingsWhere(
13
- makeWhere: (
14
- f: SomethingWhereFilter
15
- ) => Where | [Where, ...Where[]],
16
- mode?: "or" | "and"
17
- ) {
18
- return makeSomethingFilter_((f) => {
19
- const m = makeWhere ? makeWhere(f) : []
20
- return ({
21
- mode,
22
- where: (Array.isArray(m) ? m as unknown as [Where, ...Where[]] : [m]) as readonly [Where, ...Where[]]
23
- })
24
- })
25
- }
26
-
27
- type SomethingElse = {
28
- a: string
29
- b: number
30
- }
31
-
32
- type Something = {
33
- a: number
34
- id: string
35
- b: string
36
- c: readonly string[]
37
- d: readonly SomethingElse[]
38
- }
39
-
40
- test("works", () => {
41
- expect(buildWhereCosmosQuery(
42
- somethingsWhere((_) => _("b", (_) => "b2")),
43
- "Somethings",
44
- "importedMarkerId",
45
- {},
46
- undefined,
47
- 10
48
- ))
49
- .toEqual({
50
- "parameters": [
51
- {
52
- "name": "@id",
53
- "value": "importedMarkerId"
54
- },
55
- {
56
- "name": "@v0",
57
- "value": "b2"
58
- }
59
- ],
60
- "query": `
61
- SELECT f
62
- FROM Somethings f
63
-
64
- WHERE f.id != @id AND f.b = @v0
65
- OFFSET 0 LIMIT 10`
66
- })
67
-
68
- expect(buildWhereCosmosQuery(
69
- somethingsWhere((_) => _("d.-1.a", Filters.isnt("a2"))),
70
- "Somethings",
71
- "importedMarkerId",
72
- {},
73
- undefined,
74
- 10
75
- ))
76
- .toEqual({
77
- "parameters": [
78
- {
79
- "name": "@id",
80
- "value": "importedMarkerId"
81
- },
82
- {
83
- "name": "@v0",
84
- "value": "a2"
85
- }
86
- ],
87
- "query": `
88
- SELECT f
89
- FROM Somethings f
90
- JOIN d IN f.d
91
- WHERE f.id != @id AND d.a <> @v0
92
- OFFSET 0 LIMIT 10`
93
- })
94
- })
@@ -1,166 +0,0 @@
1
- import type { StoreWhereFilter, Where } from "@effect-app/infra/services/Store"
2
- import { ReadonlyArray } from "effect-app"
3
- import { Filters, makeFilters } from "../../filter.js"
4
- import { codeFilter } from "./utils.js"
5
-
6
- const somethings = [
7
- { a: 1, b: "b", c: ["c"], d: [{ a: "a2", b: 1 }, { a: "a", b: 1 }], id: "1" },
8
- { a: 2, b: "b2", c: ["c2"], d: [{ a: "a4", b: 2 }, { a: "a5", b: 2 }], id: "2" }
9
- ] satisfies readonly Something[]
10
-
11
- const f_ = makeFilters<Something>()
12
- export type SomethingWhereFilter = typeof f_
13
-
14
- export function makeSomethingFilter_(filter: (f: SomethingWhereFilter) => StoreWhereFilter) {
15
- return filter(f_)
16
- }
17
-
18
- export function somethingsWhere(
19
- makeWhere: (
20
- f: SomethingWhereFilter
21
- ) => Where | [Where, ...Where[]],
22
- mode?: "or" | "and"
23
- ) {
24
- return makeSomethingFilter_((f) => {
25
- const m = makeWhere ? makeWhere(f) : []
26
- return ({
27
- mode,
28
- where: (Array.isArray(m) ? m as unknown as [Where, ...Where[]] : [m]) as readonly [Where, ...Where[]]
29
- })
30
- })
31
- }
32
-
33
- type SomethingElse = {
34
- a: string
35
- b: number
36
- }
37
-
38
- type Something = {
39
- a: number
40
- id: string
41
- b: string
42
- c: readonly string[]
43
- d: readonly SomethingElse[]
44
- }
45
-
46
- test("works", () => {
47
- expect(
48
- ReadonlyArray.filterMap(
49
- somethings,
50
- codeFilter(
51
- somethingsWhere((_) => _("b", (_) => "b2"))
52
- )
53
- )
54
- )
55
- .toEqual([somethings[1]])
56
-
57
- expect(
58
- ReadonlyArray.filterMap(
59
- somethings,
60
- codeFilter(
61
- somethingsWhere((_) => _("b", Filters.contains("b")))
62
- )
63
- )
64
- )
65
- .toEqual([somethings[0], somethings[1]])
66
-
67
- expect(
68
- ReadonlyArray.filterMap(
69
- somethings,
70
- codeFilter(
71
- somethingsWhere((_) => _("b", Filters.contains("2")))
72
- )
73
- )
74
- )
75
- .toEqual([somethings[1]])
76
-
77
- expect(
78
- ReadonlyArray.filterMap(
79
- somethings,
80
- codeFilter(
81
- somethingsWhere((_) => _("b", Filters.endsWith("b")))
82
- )
83
- )
84
- )
85
- .toEqual([somethings[0]])
86
-
87
- expect(
88
- ReadonlyArray.filterMap(
89
- somethings,
90
- codeFilter(
91
- somethingsWhere((_) => _("b", Filters.endsWith("2")))
92
- )
93
- )
94
- )
95
- .toEqual([somethings[1]])
96
-
97
- expect(
98
- ReadonlyArray.filterMap(
99
- somethings,
100
- codeFilter(
101
- somethingsWhere((_) => _("b", Filters.startsWith("b")))
102
- )
103
- )
104
- )
105
- .toEqual([somethings[0], somethings[1]])
106
-
107
- expect(
108
- ReadonlyArray.filterMap(
109
- somethings,
110
- codeFilter(
111
- somethingsWhere((_) => _("b", Filters.startsWith("2")))
112
- )
113
- )
114
- )
115
- .toEqual([])
116
-
117
- expect(
118
- ReadonlyArray.filterMap(
119
- somethings,
120
- codeFilter(
121
- somethingsWhere((_) => _("b", (_) => "b"))
122
- )
123
- )
124
- )
125
- .toEqual([somethings[0]])
126
-
127
- expect(
128
- ReadonlyArray.filterMap(
129
- somethings,
130
- codeFilter(
131
- somethingsWhere((_) => _("c", Filters.includes("c")))
132
- )
133
- )
134
- )
135
- .toEqual([somethings[0]])
136
-
137
- expect(
138
- ReadonlyArray.filterMap(
139
- somethings,
140
- codeFilter(
141
- somethingsWhere((_) => _("d.-1.a", (_) => "a5"))
142
- )
143
- )
144
- )
145
- .toEqual([somethings[1]])
146
-
147
- expect(
148
- ReadonlyArray.filterMap(
149
- somethings,
150
- codeFilter(
151
- somethingsWhere((_) => _("d.-1.a", (_) => "a"))
152
- )
153
- )
154
- )
155
- .toEqual([somethings[0]])
156
-
157
- expect(
158
- ReadonlyArray.filterMap(
159
- somethings,
160
- codeFilter(
161
- somethingsWhere((_) => _("d.-1.a", Filters.isnt("a")))
162
- )
163
- )
164
- )
165
- .toEqual([somethings[1]])
166
- })