@effect-app/infra 4.0.0-beta.316 → 4.0.0-beta.317

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 (46) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/Store/Cosmos/query.d.ts +2 -1
  3. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  4. package/dist/Store/Cosmos/query.js +60 -2
  5. package/dist/Store/Cosmos.d.ts.map +1 -1
  6. package/dist/Store/Cosmos.js +17 -12
  7. package/dist/Store/Disk.d.ts.map +1 -1
  8. package/dist/Store/Disk.js +12 -7
  9. package/dist/Store/Memory.d.ts +2 -1
  10. package/dist/Store/Memory.d.ts.map +1 -1
  11. package/dist/Store/Memory.js +28 -15
  12. package/dist/Store/SQL/Pg.d.ts.map +1 -1
  13. package/dist/Store/SQL/Pg.js +15 -11
  14. package/dist/Store/SQL/query.d.ts +5 -1
  15. package/dist/Store/SQL/query.d.ts.map +1 -1
  16. package/dist/Store/SQL/query.js +131 -2
  17. package/dist/Store/SQL.d.ts +1 -1
  18. package/dist/Store/SQL.d.ts.map +1 -1
  19. package/dist/Store/SQL.js +24 -18
  20. package/dist/Store/codeFilter.d.ts.map +1 -1
  21. package/dist/Store/codeFilter.js +67 -20
  22. package/dist/Store/jsonDocument.d.ts +13 -0
  23. package/dist/Store/jsonDocument.d.ts.map +1 -0
  24. package/dist/Store/jsonDocument.js +31 -0
  25. package/dist/Store/utils.d.ts +16 -0
  26. package/dist/Store/utils.d.ts.map +1 -1
  27. package/dist/Store/utils.js +245 -6
  28. package/dist/logger.d.ts +5 -5
  29. package/examples/query.ts +4 -4
  30. package/package.json +3 -3
  31. package/src/Store/Cosmos/query.ts +65 -9
  32. package/src/Store/Cosmos.ts +17 -11
  33. package/src/Store/Disk.ts +28 -7
  34. package/src/Store/Memory.ts +40 -17
  35. package/src/Store/SQL/Pg.ts +23 -10
  36. package/src/Store/SQL/query.ts +152 -7
  37. package/src/Store/SQL.ts +37 -17
  38. package/src/Store/codeFilter.ts +71 -23
  39. package/src/Store/jsonDocument.ts +43 -0
  40. package/src/Store/utils.ts +275 -5
  41. package/test/cosmos-query.test.ts +100 -5
  42. package/test/dist/json-lower.test.d.ts.map +1 -0
  43. package/test/dist/query.test.d.ts.map +1 -1
  44. package/test/json-lower.test.ts +115 -0
  45. package/test/query.test.ts +261 -12
  46. package/test/sql-store.test.ts +233 -39
package/dist/Store/SQL.js CHANGED
@@ -11,8 +11,9 @@ import { SqlClient } from "effect/unstable/sql";
11
11
  import { DatabaseError, OptimisticConcurrencyException } from "../errors.js";
12
12
  import { InfraLogger } from "../logger.js";
13
13
  import { annotateDb } from "../otel.js";
14
+ import { makeJsonDocumentCodec } from "./jsonDocument.js";
14
15
  import { buildWhereSQLQuery, logQuery, sqliteDialect } from "./SQL/query.js";
15
- import { makeETag } from "./utils.js";
16
+ import { makeETag, makeJsonLower, toJsonQueryValue } from "./utils.js";
16
17
  const sqlErrorMessage = (e) => e?.message ? String(e.message) : String(e);
17
18
  const sqlIsTransient = (e) => /timeout|ETIMEDOUT|ECONNRESET|ECONNREFUSED|connection|deadlock|too many connections/i.test(sqlErrorMessage(e));
18
19
  // Map a SqlError into a typed, serializable DatabaseError (instead of `.orDie`,
@@ -33,9 +34,10 @@ const preserveStoreError = (e) => {
33
34
  export class WithNsTransaction extends Context.Service()("effect-app/WithNsTransaction") {
34
35
  }
35
36
  /** @internal */
36
- export const parseRow = (row, idKey, defaultValues) => {
37
+ export const parseRow = (row, idKey, defaultValues, decode = (doc) => doc) => {
37
38
  const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data);
38
- return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined };
39
+ const jsonDefaults = toJsonQueryValue(defaultValues);
40
+ return decode({ ...jsonDefaults, ...data, [idKey]: row.id, _etag: row._etag ?? undefined });
39
41
  };
40
42
  const parseSelectRow = (row, idKey) => {
41
43
  const result = {};
@@ -64,7 +66,9 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
64
66
  return {
65
67
  make: Effect.fnUntraced(function* (name, idKey, seed, config) {
66
68
  const tableName = `${prefix}${name}`;
67
- const defaultValues = config?.defaultValues ?? {};
69
+ const json = makeJsonLower(config);
70
+ const defaultValues = json.toJson(config?.defaultValues ?? {});
71
+ const codec = makeJsonDocumentCodec(config?.schema);
68
72
  const resolveNamespace = !config?.allowNamespace
69
73
  ? Effect.succeed("primary")
70
74
  : storeId.pipe(Effect.map((namespace) => {
@@ -77,11 +81,11 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
77
81
  .unsafe(`CREATE TABLE IF NOT EXISTS "${tableName}" (id TEXT NOT NULL, _namespace TEXT NOT NULL DEFAULT 'primary', _etag TEXT, data ${jsonColumnType} NOT NULL, PRIMARY KEY (id, _namespace))`)
78
82
  .pipe(Effect.andThen(sql.unsafe(`CREATE TABLE IF NOT EXISTS "_migrations" (id TEXT NOT NULL, version TEXT NOT NULL, PRIMARY KEY (id, version))`)), Effect.orDie, Effect.asVoid);
79
83
  const toRow = (e) => {
80
- const newE = makeETag(e);
84
+ const newE = makeETag(codec.encode(e));
81
85
  const id = newE[idKey];
82
86
  const { _etag, [idKey]: _id, ...rest } = newE;
83
87
  const data = JSON.stringify(rest);
84
- return { id, _etag: newE._etag, data, item: newE };
88
+ return { id, _etag: newE._etag, data, item: codec.decode(newE) };
85
89
  };
86
90
  const exec = (query, params) => sql.unsafe(query, params).pipe(Effect.mapError(toDatabaseError));
87
91
  const setInternal = Effect.fnUntraced(function* (e, ns) {
@@ -148,7 +152,7 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
148
152
  all: resolveNamespace.pipe(Effect.flatMap((ns) => {
149
153
  const sqlText = `SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = ?`;
150
154
  return exec(sqlText, [ns])
151
- .pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), annotateDb({
155
+ .pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues, codec.decode))), annotateDb({
152
156
  operation: "all",
153
157
  system,
154
158
  collection: tableName,
@@ -163,7 +167,7 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
163
167
  .pipe(Effect.map((rows) => {
164
168
  const row = rows[0];
165
169
  return row
166
- ? Option.some(parseRow(row, idKey, defaultValues))
170
+ ? Option.some(parseRow(row, idKey, defaultValues, codec.decode))
167
171
  : Option.none();
168
172
  }), annotateDb({
169
173
  operation: "find",
@@ -186,7 +190,7 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
186
190
  .select, f
187
191
  .order, f
188
192
  .skip, f
189
- .limit, ns);
193
+ .limit, ns, json);
190
194
  })
191
195
  .pipe(Effect
192
196
  .tap((q) => logQuery(q)), Effect.tap((q) => Effect.annotateCurrentSpan({ "db.query.text": q.sql })), Effect.flatMap((q) => exec(q.sql, q.params).pipe(Effect.map((rows) => {
@@ -199,7 +203,7 @@ function makeSQLStoreInt(system, dialect, jsonColumnType) {
199
203
  };
200
204
  });
201
205
  }
202
- return rows.map((r) => parseRow(r, idKey, defaultValues));
206
+ return rows.map((r) => parseRow(r, idKey, defaultValues, codec.decode));
203
207
  }))), annotateDb({
204
208
  operation: "filter",
205
209
  system,
@@ -265,7 +269,9 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
265
269
  return {
266
270
  make: Effect.fnUntraced(function* (name, idKey, seed, config) {
267
271
  const tableName = `${prefix}${name}`;
268
- const defaultValues = config?.defaultValues ?? {};
272
+ const json = makeJsonLower(config);
273
+ const defaultValues = json.toJson(config?.defaultValues ?? {});
274
+ const codec = makeJsonDocumentCodec(config?.schema);
269
275
  const resolveNamespace = !config?.allowNamespace
270
276
  ? Effect.succeed("primary")
271
277
  : storeId.pipe(Effect.map((namespace) => {
@@ -275,11 +281,11 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
275
281
  return namespace;
276
282
  }));
277
283
  const toRow = (e) => {
278
- const newE = makeETag(e);
284
+ const newE = makeETag(codec.encode(e));
279
285
  const id = newE[idKey];
280
286
  const { _etag, [idKey]: _id, ...rest } = newE;
281
287
  const data = JSON.stringify(rest);
282
- return { id, _etag: newE._etag, data, item: newE };
288
+ return { id, _etag: newE._etag, data, item: codec.decode(newE) };
283
289
  };
284
290
  const exec = (ns, query, params) => withNsSql(ns, (sql) => sql.unsafe(query, params).pipe(Effect.mapError(toDatabaseError)));
285
291
  const ensureTable = (ns) => withNsSql(ns, (sql) => sql
@@ -349,7 +355,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
349
355
  all: resolveNamespace.pipe(Effect.flatMap((ns) => {
350
356
  const sqlText = `SELECT id, _etag, data FROM "${tableName}"`;
351
357
  return exec(ns, sqlText)
352
- .pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), annotateDb({
358
+ .pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues, codec.decode))), annotateDb({
353
359
  operation: "all",
354
360
  system: "sqlite",
355
361
  collection: tableName,
@@ -364,7 +370,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
364
370
  .pipe(Effect.map((rows) => {
365
371
  const row = rows[0];
366
372
  return row
367
- ? Option.some(parseRow(row, idKey, defaultValues))
373
+ ? Option.some(parseRow(row, idKey, defaultValues, codec.decode))
368
374
  : Option.none();
369
375
  }), annotateDb({
370
376
  operation: "find",
@@ -386,7 +392,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
386
392
  .select, f
387
393
  .order, f
388
394
  .skip, f
389
- .limit))
395
+ .limit, undefined, json))
390
396
  .pipe(Effect
391
397
  .tap((q) => logQuery(q)), Effect.tap((q) => Effect.annotateCurrentSpan({ "db.query.text": q.sql })), Effect.flatMap((q) => exec(ns, q.sql, q.params).pipe(Effect.map((rows) => {
392
398
  if (f.select) {
@@ -398,7 +404,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
398
404
  };
399
405
  });
400
406
  }
401
- return rows.map((r) => parseRow(r, idKey, defaultValues));
407
+ return rows.map((r) => parseRow(r, idKey, defaultValues, codec.decode));
402
408
  }))), annotateDb({
403
409
  operation: "filter",
404
410
  system: "sqlite",
@@ -469,4 +475,4 @@ export function SQLiteStoreLayer(cfg, options) {
469
475
  return StoreMaker
470
476
  .toLayer(makeSQLStoreInt("sqlite", sqliteDialect, "JSON")(cfg));
471
477
  }
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFHdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQWdHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwSixPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLFlBQVksQ0FBQTtBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFtQixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBRSxDQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsQ0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDcEcsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFV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
478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFHdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFHM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEVBQWdHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwSixPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLFlBQVksQ0FBQTtBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFtQixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RSxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUUsQ0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFFLENBQVMsQ0FBQyxPQUFPLENBQUMsQ0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"codeFilter.d.ts","sourceRoot":"","sources":["../../src/Store/codeFilter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAwD9C,eAAO,MAAM,mBAAmB,GAAI,CAAC,KAAK,OAAO,KAAK,CAAC,YAA0B,CAAA;AAKjF,eAAO,MAAM,eAAe,MAAO,SAAS,YAAY,EAAE,cAAc,MAAM,GAAG,IAAI,mBAsBpF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,WAAW,CAAC,YAA6B,CAAA;AA8FtG,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,OAAO,CAAC,KAAG,OAMxE,CAAA;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,OACjE,CAAC,uCACb"}
1
+ {"version":3,"file":"codeFilter.d.ts","sourceRoot":"","sources":["../../src/Store/codeFilter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAwG9C,eAAO,MAAM,mBAAmB,GAAI,CAAC,KAAK,OAAO,KAAK,CAAC,YAA0B,CAAA;AAKjF,eAAO,MAAM,eAAe,MAAO,SAAS,YAAY,EAAE,cAAc,MAAM,GAAG,IAAI,mBAsBpF,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,WAAW,CAAC,YAA6B,CAAA;AA8FtG,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,OAAO,CAAC,KAAG,OAMxE,CAAA;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,OACjE,CAAC,uCACb"}
@@ -3,27 +3,38 @@
3
3
  import * as Array from "effect-app/Array";
4
4
  import * as Option from "effect-app/Option";
5
5
  import { assertUnreachable } from "effect-app/utils";
6
- import { compare, get, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive } from "./utils.js";
7
- const vAsArr = (v) => v;
6
+ import { compare, get, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive, toJsonQueryValue } from "./utils.js";
7
+ const vAsArr = (v) => toJsonQueryValue(v);
8
+ const mapEntries = (value) => {
9
+ const json = toJsonQueryValue(value);
10
+ if (!Array.isArray(json))
11
+ return [];
12
+ return json.filter((entry) => Array.isArray(entry) && entry.length >= 2);
13
+ };
14
+ const pairEq = (entry, pair) => {
15
+ const json = toJsonQueryValue(pair);
16
+ return Array.isArray(json) && json.length >= 2 && compare(entry[0], json[0]) && compare(entry[1], json[1]);
17
+ };
8
18
  const filterStatement = (x, p) => {
9
- const k = get(x, p.path);
19
+ const k = toJsonQueryValue(get(x, p.path));
20
+ const v = toJsonQueryValue(p.value);
10
21
  switch (p.op) {
11
22
  case "in":
12
- return p.value.includes(k);
23
+ return v.includes(k);
13
24
  case "notIn":
14
- return !p.value.includes(k);
25
+ return !v.includes(k);
15
26
  case "lt":
16
- return lowerThan(k, p.value);
27
+ return lowerThan(k, v);
17
28
  case "lte":
18
- return lowerThanExclusive(k, p.value);
29
+ return lowerThanExclusive(k, v);
19
30
  case "gt":
20
- return greaterThan(k, p.value);
31
+ return greaterThan(k, v);
21
32
  case "gte":
22
- return greaterThanExclusive(k, p.value);
33
+ return greaterThanExclusive(k, v);
23
34
  case "includes":
24
- return k.includes(p.value);
35
+ return k.includes(v);
25
36
  case "notIncludes":
26
- return !k.includes(p.value);
37
+ return !k.includes(v);
27
38
  case "includes-any":
28
39
  return (vAsArr(p.value)).some((_) => k?.includes(_));
29
40
  case "notIncludes-any":
@@ -32,23 +43,59 @@ const filterStatement = (x, p) => {
32
43
  return (vAsArr(p.value)).every((_) => k?.includes(_));
33
44
  case "notIncludes-all":
34
45
  return !(vAsArr(p.value)).every((_) => k?.includes(_));
46
+ case "hasKey":
47
+ return mapEntries(k).some(([key]) => compare(key, v));
48
+ case "notHasKey":
49
+ return !mapEntries(k).some(([key]) => compare(key, v));
50
+ case "hasValue":
51
+ return mapEntries(k).some(([, val]) => compare(val, v));
52
+ case "notHasValue":
53
+ return !mapEntries(k).some(([, val]) => compare(val, v));
54
+ case "hasKeyValue":
55
+ return mapEntries(k).some((entry) => pairEq(entry, v));
56
+ case "notHasKeyValue":
57
+ return !mapEntries(k).some((entry) => pairEq(entry, v));
58
+ case "hasKey-any":
59
+ return vAsArr(p.value).some((key) => mapEntries(k).some(([k0]) => compare(k0, key)));
60
+ case "notHasKey-any":
61
+ return !vAsArr(p.value).some((key) => mapEntries(k).some(([k0]) => compare(k0, key)));
62
+ case "hasKey-all":
63
+ return vAsArr(p.value).every((key) => mapEntries(k).some(([k0]) => compare(k0, key)));
64
+ case "notHasKey-all":
65
+ return !vAsArr(p.value).every((key) => mapEntries(k).some(([k0]) => compare(k0, key)));
66
+ case "hasValue-any":
67
+ return vAsArr(p.value).some((val) => mapEntries(k).some(([, v0]) => compare(v0, val)));
68
+ case "notHasValue-any":
69
+ return !vAsArr(p.value).some((val) => mapEntries(k).some(([, v0]) => compare(v0, val)));
70
+ case "hasValue-all":
71
+ return vAsArr(p.value).every((val) => mapEntries(k).some(([, v0]) => compare(v0, val)));
72
+ case "notHasValue-all":
73
+ return !vAsArr(p.value).every((val) => mapEntries(k).some(([, v0]) => compare(v0, val)));
74
+ case "hasKeyValue-any":
75
+ return vAsArr(p.value).some((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)));
76
+ case "notHasKeyValue-any":
77
+ return !vAsArr(p.value).some((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)));
78
+ case "hasKeyValue-all":
79
+ return vAsArr(p.value).every((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)));
80
+ case "notHasKeyValue-all":
81
+ return !vAsArr(p.value).every((pair) => mapEntries(k).some((entry) => pairEq(entry, pair)));
35
82
  case "contains":
36
- return k.toLowerCase().includes(p.value.toLowerCase());
83
+ return k.toLowerCase().includes(v.toLowerCase());
37
84
  case "endsWith":
38
- return k.toLowerCase().endsWith(p.value.toLowerCase());
85
+ return k.toLowerCase().endsWith(v.toLowerCase());
39
86
  case "startsWith":
40
- return k.toLowerCase().startsWith(p.value.toLowerCase());
87
+ return k.toLowerCase().startsWith(v.toLowerCase());
41
88
  case "notContains":
42
- return !k.toLowerCase().includes(p.value.toLowerCase());
89
+ return !k.toLowerCase().includes(v.toLowerCase());
43
90
  case "notEndsWith":
44
- return !k.toLowerCase().endsWith(p.value.toLowerCase());
91
+ return !k.toLowerCase().endsWith(v.toLowerCase());
45
92
  case "notStartsWith":
46
- return !k.toLowerCase().startsWith(p.value.toLowerCase());
93
+ return !k.toLowerCase().startsWith(v.toLowerCase());
47
94
  case "neq":
48
- return !compare(k, p.value);
95
+ return !compare(k, v);
49
96
  case "eq":
50
97
  case undefined:
51
- return compare(k, p.value);
98
+ return compare(k, v);
52
99
  default: {
53
100
  return assertUnreachable(p.op);
54
101
  }
@@ -170,4 +217,4 @@ export const codeFilter3_ = (state, sut) => {
170
217
  export function codeFilter(filter) {
171
218
  return (x) => codeFilter3_(filter, x) ? Option.some(x) : Option.none();
172
219
  }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9jb2RlRmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCwwREFBMEQ7QUFDMUQsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUd6QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0csTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQXFCLENBQUE7QUFFbkQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBVSxFQUFFLEVBQUU7SUFDN0MsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEIsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDYixLQUFLLElBQUk7WUFDUCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVCLEtBQUssT0FBTztZQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QixLQUFLLElBQUk7WUFDUCxPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlCLEtBQUssS0FBSztZQUNSLE9BQU8sa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QyxLQUFLLElBQUk7WUFDUCxPQUFPLFdBQVcsQ0FBQyxDQUFD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
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9jb2RlRmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCwwREFBMEQ7QUFDMUQsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQTtBQUd6QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0gsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBVSxDQUFBO0FBRTNELE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYyxFQUFpQyxFQUFFO0lBQ25FLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBK0IsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUN2RyxDQUFDLENBQUE7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWtDLEVBQUUsSUFBYSxFQUFFLEVBQUU7SUFDbkUsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUM1RyxDQUFDLENBQUE7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxDQUFVLEVBQUUsRUFBRTtJQUM3QyxNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNiLEtBQUssSUFBSTtZQUNQLE9BQVEsQ0FBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxLQUFLLE9BQU87WUFDVixPQUFPLENBQUUsQ0FBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxLQUFLLElBQUk7WUFDUCxPQUFPLFNBQVMsQ0FBQyxDQUFRLEVBQUUsQ0FBUSxDQUFDLENBQUE7UUFDdEMsS0FBSyxLQUFLO1lBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFRLEVBQUUsQ0FBUSxDQUFDLENBQUE7UUFDL0MsS0FBSyxJQUFJO1lBQ1AsT0FBTyxXQUFXLENBQUMsQ0FBUSxFQUFFLENBQVEsQ0FBQyxDQUFBO1FBQ3hDLEtBQUssS0FBSztZQUNSLE9BQU8sb0JBQW9CLENBQUMsQ0FBUSxFQUFFLENBQVEsQ0FBQyxDQUFBO1FBQ2pELEtBQUssVUFBVTtZQUNiLE9BQVEsQ0FBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUMsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sQ0FBRSxDQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzQyxLQUFLLGNBQWM7WUFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUUsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzRSxLQUFLLGNBQWM7WUFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0UsS0FBSyxpQkFBaUI7WUFDcEIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM1RSxLQUFLLFFBQVE7WUFDWCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkQsS0FBSyxXQUFXO1lBQ2QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEQsS0FBSyxVQUFVO1lBQ2Is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
@@ -0,0 +1,13 @@
1
+ import type { FieldValues } from "effect-app/Model/filter/types";
2
+ import * as S from "effect-app/Schema";
3
+ import type { PersistenceModelType } from "effect-app/Store";
4
+ export interface JsonDocumentCodec<E extends FieldValues> {
5
+ readonly encode: (doc: PersistenceModelType<E>) => PersistenceModelType<E>;
6
+ readonly decode: (doc: PersistenceModelType<E>) => PersistenceModelType<E>;
7
+ }
8
+ /**
9
+ * Encoded document ↔ JSON document. Prefer `Schema.toCodecJson(toEncoded(schema))`
10
+ * when the store has a schema; otherwise lower Date/Map/Set structurally.
11
+ */
12
+ export declare const makeJsonDocumentCodec: <E extends FieldValues>(schema?: S.Top) => JsonDocumentCodec<E>;
13
+ //# sourceMappingURL=jsonDocument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonDocument.d.ts","sourceRoot":"","sources":["../../src/Store/jsonDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAG5D,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,WAAW;IACtD,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAC1E,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAA;CAC3E;AAYD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,WAAW,WAAW,CAAC,CAAC,GAAG,KAAG,iBAAiB,CAAC,CAAC,CAkBhG,CAAA"}
@@ -0,0 +1,31 @@
1
+ import * as S from "effect-app/Schema";
2
+ import { toJsonQueryValue } from "./utils.js";
3
+ const splitEtag = (doc) => {
4
+ const { _etag, ...rest } = doc;
5
+ return { rest: rest, _etag };
6
+ };
7
+ const joinEtag = (rest, _etag) => (_etag === undefined ? rest : { ...rest, _etag });
8
+ /**
9
+ * Encoded document ↔ JSON document. Prefer `Schema.toCodecJson(toEncoded(schema))`
10
+ * when the store has a schema; otherwise lower Date/Map/Set structurally.
11
+ */
12
+ export const makeJsonDocumentCodec = (schema) => {
13
+ if (schema) {
14
+ const codec = S.toCodecJson(S.toEncoded(schema));
15
+ return {
16
+ encode: (doc) => {
17
+ const { rest, _etag } = splitEtag(doc);
18
+ return joinEtag(S.encodeSync(codec)(rest), _etag);
19
+ },
20
+ decode: (doc) => {
21
+ const { rest, _etag } = splitEtag(doc);
22
+ return joinEtag(S.decodeSync(codec)(rest), _etag);
23
+ }
24
+ };
25
+ }
26
+ return {
27
+ encode: (doc) => toJsonQueryValue(doc),
28
+ decode: (doc) => doc
29
+ };
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkRvY3VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL2pzb25Eb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssQ0FBQyxNQUFNLG1CQUFtQixDQUFBO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU83QyxNQUFNLFNBQVMsR0FBRyxDQUF3QixHQUE0QixFQUFFLEVBQUU7SUFDeEUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtJQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUNuQyxDQUFDLENBQUE7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUNmLElBQU8sRUFDUCxLQUF5QixFQUNBLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQXdCLE1BQWMsRUFBd0IsRUFBRTtJQUNuRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUF1QixDQUFBO1FBQ3RFLE9BQU87WUFDTCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDZCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDdEMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUN4RCxDQUFDO1lBQ0QsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3RDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBYyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDN0QsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUE0QjtRQUNqRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUc7S0FDckIsQ0FBQTtBQUNILENBQUMsQ0FBQSJ9
@@ -1,7 +1,23 @@
1
1
  import * as Effect from "effect-app/Effect";
2
+ import type { FilterResult } from "effect-app/Model/filter/filterApi";
2
3
  import * as Option from "effect-app/Option";
4
+ import * as S from "effect-app/Schema";
3
5
  import type { PersistenceModelType, SupportedValues2 } from "effect-app/Store";
4
6
  import { OptimisticConcurrencyException } from "../errors.js";
7
+ /**
8
+ * Lower Date / Map / Set to JSON when no field schema is available.
9
+ * Prefer {@link encodeWithSchema} / {@link jsonifyFilter} with the store schema.
10
+ */
11
+ export declare function toJsonQueryValue(value: unknown): unknown;
12
+ export declare function encodeWithSchema(schema: S.Top | undefined, value: unknown): unknown;
13
+ export declare function jsonifyFilter(filter: readonly FilterResult[], schema?: S.Top): FilterResult[];
14
+ export type JsonLower = {
15
+ readonly toJson: (value: unknown) => unknown;
16
+ readonly jsonifyFilter: (filter: readonly FilterResult[]) => FilterResult[];
17
+ };
18
+ export declare const makeJsonLower: (config?: {
19
+ readonly schema?: S.Top;
20
+ }) => JsonLower;
5
21
  /** Traverse an object by a dot-separated path string, e.g. `"a.b.c"`. */
6
22
  export declare function get(obj: any, path: string): any;
7
23
  export declare const makeETag: <E extends PersistenceModelType<{}>>({ _etag, ...e }: E) => E;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAE7D,yEAAyE;AACzE,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAE/C;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,mBACxC,CAAC,KACjB,CAKQ,CAAA;AAEX,eAAO,MAAM,cAAc,SAAU,MAAM,MACb,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,2GA0BnF,CAAA;AAEJ,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAO,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AAEtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAiN7D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAGnF;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,GACb,YAAY,EAAE,CAOhB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,KAAK,YAAY,EAAE,CAAA;CAC5E,CAAA;AAED,eAAO,MAAM,aAAa,YAAa;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAA;CAAE,KAAG,SAGnE,CAAA;AAEF,yEAAyE;AACzE,wBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAE/C;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,mBACxC,CAAC,KACjB,CAKQ,CAAA;AAEX,eAAO,MAAM,cAAc,SAAU,MAAM,MACb,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,2GA0BnF,CAAA;AAEJ,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}