@kairos-es/store-postgres 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (91) hide show
  1. package/README.md +61 -29
  2. package/dist/cjs/clients.js +34 -24
  3. package/dist/cjs/clients.js.map +1 -1
  4. package/dist/cjs/config.js +9 -15
  5. package/dist/cjs/config.js.map +1 -1
  6. package/dist/cjs/ensureSchema.js +8 -3
  7. package/dist/cjs/ensureSchema.js.map +1 -1
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/internal/ddl.js +29 -12
  10. package/dist/cjs/internal/ddl.js.map +1 -1
  11. package/dist/cjs/internal/matchSql.js +57 -4
  12. package/dist/cjs/internal/matchSql.js.map +1 -1
  13. package/dist/cjs/internal/readPlan.js +33 -5
  14. package/dist/cjs/internal/readPlan.js.map +1 -1
  15. package/dist/cjs/internal/transport.js +42 -15
  16. package/dist/cjs/internal/transport.js.map +1 -1
  17. package/dist/cjs/store.js +30 -25
  18. package/dist/cjs/store.js.map +1 -1
  19. package/dist/dts-cjs/clients.d.ts +66 -0
  20. package/dist/dts-cjs/clients.d.ts.map +1 -0
  21. package/dist/{dts → dts-cjs}/config.d.ts +9 -19
  22. package/dist/{dts → dts-cjs}/config.d.ts.map +1 -1
  23. package/dist/{dts → dts-cjs}/ensureSchema.d.ts +8 -3
  24. package/dist/dts-cjs/ensureSchema.d.ts.map +1 -0
  25. package/dist/{dts → dts-cjs}/index.d.ts +4 -3
  26. package/dist/dts-cjs/index.d.ts.map +1 -0
  27. package/dist/{dts → dts-cjs}/internal/ddl.d.ts +1 -1
  28. package/dist/{dts → dts-cjs}/internal/ddl.d.ts.map +1 -1
  29. package/dist/{dts → dts-cjs}/internal/matchSql.d.ts +26 -2
  30. package/dist/dts-cjs/internal/matchSql.d.ts.map +1 -0
  31. package/dist/{dts → dts-cjs}/internal/readPlan.d.ts +1 -1
  32. package/dist/{dts → dts-cjs}/internal/readPlan.d.ts.map +1 -1
  33. package/dist/{dts → dts-cjs}/internal/transport.d.ts +34 -19
  34. package/dist/dts-cjs/internal/transport.d.ts.map +1 -0
  35. package/dist/dts-cjs/package.json +3 -0
  36. package/dist/dts-cjs/store.d.ts.map +1 -0
  37. package/dist/dts-esm/clients.d.ts +66 -0
  38. package/dist/dts-esm/clients.d.ts.map +1 -0
  39. package/dist/dts-esm/config.d.ts +48 -0
  40. package/dist/dts-esm/config.d.ts.map +1 -0
  41. package/dist/dts-esm/ensureSchema.d.ts +40 -0
  42. package/dist/dts-esm/ensureSchema.d.ts.map +1 -0
  43. package/dist/dts-esm/index.d.ts +42 -0
  44. package/dist/dts-esm/index.d.ts.map +1 -0
  45. package/dist/dts-esm/internal/ddl.d.ts +174 -0
  46. package/dist/dts-esm/internal/ddl.d.ts.map +1 -0
  47. package/dist/dts-esm/internal/matchSql.d.ts +164 -0
  48. package/dist/dts-esm/internal/matchSql.d.ts.map +1 -0
  49. package/dist/dts-esm/internal/readPlan.d.ts +72 -0
  50. package/dist/dts-esm/internal/readPlan.d.ts.map +1 -0
  51. package/dist/dts-esm/internal/transport.d.ts +131 -0
  52. package/dist/dts-esm/internal/transport.d.ts.map +1 -0
  53. package/dist/dts-esm/package.json +3 -0
  54. package/dist/dts-esm/store.d.ts +17 -0
  55. package/dist/dts-esm/store.d.ts.map +1 -0
  56. package/dist/esm/clients.js +34 -24
  57. package/dist/esm/clients.js.map +1 -1
  58. package/dist/esm/config.js +9 -15
  59. package/dist/esm/config.js.map +1 -1
  60. package/dist/esm/ensureSchema.js +8 -3
  61. package/dist/esm/ensureSchema.js.map +1 -1
  62. package/dist/esm/index.js +4 -3
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/internal/ddl.js +30 -13
  65. package/dist/esm/internal/ddl.js.map +1 -1
  66. package/dist/esm/internal/matchSql.js +55 -2
  67. package/dist/esm/internal/matchSql.js.map +1 -1
  68. package/dist/esm/internal/readPlan.js +32 -5
  69. package/dist/esm/internal/readPlan.js.map +1 -1
  70. package/dist/esm/internal/transport.js +42 -15
  71. package/dist/esm/internal/transport.js.map +1 -1
  72. package/dist/esm/store.js +30 -25
  73. package/dist/esm/store.js.map +1 -1
  74. package/package.json +13 -11
  75. package/src/clients.ts +43 -31
  76. package/src/config.ts +12 -13
  77. package/src/ensureSchema.ts +8 -3
  78. package/src/index.ts +4 -3
  79. package/src/internal/ddl.ts +33 -13
  80. package/src/internal/matchSql.ts +63 -1
  81. package/src/internal/readPlan.ts +11 -6
  82. package/src/internal/transport.ts +71 -24
  83. package/src/store.ts +35 -28
  84. package/dist/dts/clients.d.ts +0 -34
  85. package/dist/dts/clients.d.ts.map +0 -1
  86. package/dist/dts/ensureSchema.d.ts.map +0 -1
  87. package/dist/dts/index.d.ts.map +0 -1
  88. package/dist/dts/internal/matchSql.d.ts.map +0 -1
  89. package/dist/dts/internal/transport.d.ts.map +0 -1
  90. package/dist/dts/store.d.ts.map +0 -1
  91. /package/dist/{dts → dts-cjs}/store.d.ts +0 -0
package/src/store.ts CHANGED
@@ -40,7 +40,6 @@
40
40
  * (`packages/core/src/SubscribeMachine.ts`), shared by every engine, and this
41
41
  * module only hands it a `fetch` and a `listen` built from the two clients.
42
42
  */
43
- import type { SqlClient, SqlError } from '@effect/sql'
44
43
  import type {
45
44
  DcbEvent,
46
45
  Position,
@@ -61,6 +60,7 @@ import {
61
60
  subscribeStream,
62
61
  } from '@kairos-es/core'
63
62
  import { type Array as Arr, Effect, Layer, type Scope, Stream } from 'effect'
63
+ import type { SqlClient, SqlError } from 'effect/sql'
64
64
  import { PgClientDirect, PgClientPooled } from './clients'
65
65
  import { decodePostgresStoreConfig, type PostgresStoreConfig } from './config'
66
66
  import {
@@ -138,15 +138,19 @@ const make = (
138
138
  * Nor would such a parameter be load-bearing for the REPEATABLE READ
139
139
  * transaction this runs inside, which is the trap worth naming, since a
140
140
  * closed-over client LOOKS like it must escape to its own snapshot.
141
- * `@effect/sql` resolves a statement's connection when the statement RUNS,
142
- * from the FIBRE CONTEXT rather than from the client value: `withTransaction`
143
- * acquires one connection and `Effect.locally`s it into
144
- * `FiberRef.currentContext` under its `TransactionConnection` tag, and every
145
- * statement a client builds resolves through a `getConnection` that reads
146
- * that tag first, falling back to the pool acquirer only when it is absent
147
- * (`@effect/sql@0.52` `src/internal/client.ts`). A statement therefore joins
148
- * a transaction by being RUN inside it, and passing the client along the call
149
- * chain neither adds to that nor is required by it. `read-postgres`'s
141
+ * `effect/sql` resolves a statement's connection when the statement RUNS,
142
+ * from the FIBRE CONTEXT: `withTransaction` acquires one connection and
143
+ * provides it under that client's OWN `TransactionConnection` key — one key
144
+ * per `SqlClient` instance — and every statement that client builds resolves
145
+ * through a `getConnection` that reads that key first, falling back to the
146
+ * pool only when it is absent (`effect/sql`'s `SqlClient.make`). So a
147
+ * statement joins a transaction by being RUN inside it AND by being built from
148
+ * the SAME client value that opened it; a statement from any other client,
149
+ * even one over the same database, runs on its own pooled connection outside
150
+ * the transaction. Here every statement in the frame — the isolation `SET`,
151
+ * the row fetch and this `MAX(id)` — comes from `pooled`, the client that
152
+ * opened it, so all three share its connection and its snapshot, and passing
153
+ * the client along the call chain would add nothing. `read-postgres`'s
150
154
  * `pinnedConnection` test observes the same fact from the SERVER: two
151
155
  * statements issued inside one transaction report one `pg_backend_pid()`.
152
156
  *
@@ -154,7 +158,7 @@ const make = (
154
158
  * supports: it carries no mutable state and recompiles on every execution.
155
159
  */
156
160
  const globalHead: Effect.Effect<Position, SqlError.SqlError> = pooled<{
157
- readonly max: string | null
161
+ readonly max: bigint | string | null
158
162
  }>`
159
163
  SELECT MAX(id) AS max FROM ${pooled(names.mainTable)}
160
164
  `.pipe(
@@ -251,7 +255,7 @@ const make = (
251
255
  * One row of an append function's result: the new head (`MAX(id)`), or NULL /
252
256
  * zero rows for the empty/conflict cases the callers interpret.
253
257
  */
254
- type AppendHeadRow = { readonly max: string | null }
258
+ type AppendHeadRow = { readonly max: bigint | string | null }
255
259
 
256
260
  /**
257
261
  * The ONE transaction frame every append rides: open a transaction, apply the
@@ -266,7 +270,7 @@ const make = (
266
270
  select: Effect.Effect<ReadonlyArray<AppendHeadRow>, SqlError.SqlError>,
267
271
  ): Effect.Effect<ReadonlyArray<AppendHeadRow>, SqlError.SqlError> =>
268
272
  pooled.withTransaction(
269
- setLocalLockTimeout(pooled, lockTimeout).pipe(Effect.zipRight(select)),
273
+ setLocalLockTimeout(pooled, lockTimeout).pipe(Effect.andThen(select)),
270
274
  )
271
275
 
272
276
  const append = (
@@ -344,22 +348,23 @@ const make = (
344
348
  /**
345
349
  * Wire core's subscribe machine to the live clients: `fetch` is the
346
350
  * per-subscription compiled read plan run against the pooled client and mapped
347
- * to `SequencedEvent`s; `listen` is the direct client's ref-counted, non-pooled
348
- * LISTEN on this store's channel (the Neon-safe path — `clients.ts` owns why
349
- * there are two clients at all). The plan is compiled ONCE here so the poll
350
- * loop re-binds only the cursor.
351
+ * to `SequencedEvent`s; `listen` is the direct client's LISTEN on this store's
352
+ * channel (the Neon-safe path — `clients.ts` owns why there are two clients at
353
+ * all), which reserves one of that client's connections for as long as the
354
+ * subscription's wake fibre runs and drains its notification queue as a
355
+ * stream. The plan is compiled ONCE here so the poll loop re-binds only the
356
+ * cursor.
351
357
  *
352
358
  * The wake source is `NOTIFY`, and it is a LATENCY optimisation only: the
353
- * machine's periodic position-based poll is what makes delivery correct, which
354
- * matters more here than the general argument for it suggests. The
355
- * `@effect/sql-pg` listen client SWALLOWS connection errors and does not
356
- * auto-reconnect, so a dropped LISTEN typically goes quiet rather than
357
- * erroring — the machine's listen-side retry then never fires, and the poll is
358
- * the ONLY thing that recovers the subscription. The same silence is what a
359
- * Neon pooled endpoint produces if `PgClientDirect` is misconfigured: the
360
- * pooler drops `LISTEN`/`NOTIFY` without complaint and delivery degrades to
361
- * poll-rate rather than failing, which is why that trap is a deployment-time
362
- * wiring choice and not a runtime error.
359
+ * machine's periodic position-based poll is what makes delivery correct. A
360
+ * listening connection that DROPS fails its queue with the `SqlError` it died
361
+ * of, so the machine's listen-side retry re-subscribes on a fresh connection
362
+ * — but the notifications sent while it was down are gone, and only the poll
363
+ * recovers the events they announced. And some failures are silent: a Neon
364
+ * pooled endpoint, if `PgClientDirect` is misconfigured, accepts `LISTEN` and
365
+ * then never delivers a `NOTIFY`, so delivery degrades to poll-rate rather
366
+ * than failing, which is why that trap is a deployment-time wiring choice and
367
+ * not a runtime error.
363
368
  *
364
369
  * `E` is `SqlError.SqlError` — both seams fail with it, so the machine's single
365
370
  * error parameter carries it straight through to `makeContractStore`.
@@ -375,7 +380,9 @@ const make = (
375
380
  runFetch(pooled, plan, from, limit).pipe(
376
381
  Effect.map((rows) => rows.map(rowToSequenced)),
377
382
  ),
378
- listen: direct.listen(names.channel),
383
+ listen: Stream.unwrap(
384
+ Effect.map(direct.listen(names.channel), Stream.fromQueue),
385
+ ),
379
386
  pollInterval,
380
387
  catchUpPageSize,
381
388
  },
@@ -1,34 +0,0 @@
1
- import type { SqlError } from '@effect/sql';
2
- import { PgClient } from '@effect/sql-pg';
3
- import { Context, Layer } from 'effect';
4
- declare const PgClientPooled_base: Context.TagClass<PgClientPooled, "@kairos-es/store-postgres/PgClientPooled", PgClient.PgClient>;
5
- /**
6
- * The pooled client tag: reads, the append function, and `notify`. Holds a
7
- * `PgClient` value rather than being a `PgClient.layer`, so it never collides
8
- * with the direct client on the shared `PgClient`/`SqlClient` tag.
9
- */
10
- export declare class PgClientPooled extends PgClientPooled_base {
11
- }
12
- declare const PgClientDirect_base: Context.TagClass<PgClientDirect, "@kairos-es/store-postgres/PgClientDirect", PgClient.PgClient>;
13
- /**
14
- * The direct (non-pooler) client tag: the `subscribe` listener ONLY. Point this
15
- * at a direct endpoint on Neon so `LISTEN`/`NOTIFY` is not dropped by the pooler.
16
- */
17
- export declare class PgClientDirect extends PgClientDirect_base {
18
- }
19
- /**
20
- * Build a `PgClientPooled` layer from a `PgClient` config. We construct the
21
- * client via `PgClient.make` (scoped) and place it in our OWN tag, then provide
22
- * `Reactivity.layer` (which `PgClient.make` requires) — exactly what the
23
- * built-in `PgClient.layer` does internally, minus the collision-prone claim on
24
- * the shared `PgClient` tag.
25
- */
26
- export declare const pooledLayer: (config: PgClient.PgClientConfig) => Layer.Layer<PgClientPooled, SqlError.SqlError>;
27
- /**
28
- * Build a `PgClientDirect` layer from a `PgClient` config. Same construction as
29
- * `pooledLayer`; the two differ only in which endpoint the caller points them
30
- * at (and that only matters on Neon).
31
- */
32
- export declare const directLayer: (config: PgClient.PgClientConfig) => Layer.Layer<PgClientDirect, SqlError.SqlError>;
33
- export {};
34
- //# sourceMappingURL=clients.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/clients.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;;AAEvC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAEE;CAAG;;AAEzC;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAEE;CAAG;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,QAAQ,CAAC,cAAc,KAC9B,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAG7C,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,QAAQ,CAAC,cAAc,KAC9B,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAG7C,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensureSchema.d.ts","sourceRoot":"","sources":["../../src/ensureSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAG9E;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,QAAQ,mBAAmB,KAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAQzD,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"matchSql.d.ts","sourceRoot":"","sources":["../../../src/internal/matchSql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;;;GAUG;AACH,QAAA,MAAM,aAAa,kKAQlB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAExB,CAAA;AAEZ;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,eAAW,KAAG,MAGvC,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,MACkD,CAAA;AAE3G,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,WAAW,KAAG,MA6BnD,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,KAC9C,MAImD,CAAA;AAEtD,kFAAkF;AAClF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAKnC,CAAA;AAEZ,4EAA4E;AAC5E,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAKnC,CAAA;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MAWtC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/internal/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAY,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MAA+B,CAAA;AAE1E,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACrC;AAED,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,aAAa,CAAC,aAAa,CAItE,CAAA;AAEL;;;;;;GAMG;AACH,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAAE,CAAA;AAEhF,mEAAmE;AACnE,eAAO,MAAM,WAAW,GAAI,OAAO,QAAQ,KAAG,SAQ5C,CAAA;AAEF;;;;;;GAMG;AACH,UAAU,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAC/C,QAAQ,EAAE,CAAC,IAAI,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC;CACpD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,KAAG,cAS7C,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAkDA,OAAO,EAGL,aAAa,EAQd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAA6B,KAAK,EAAsB,MAAM,QAAQ,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAoU9E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,GAChB,SAAQ,mBAAwB,KAC/B,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,GAAG,cAAc,CASnE,CAAA"}
File without changes