@effect-app/infra 0.24.0 → 0.24.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,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.24.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 075b117f: Add namespace support for Disk
8
+
3
9
  ## 0.24.0
4
10
 
5
11
  ### Minor Changes
@@ -7,9 +7,11 @@ exports.DiskStoreLive = DiskStoreLive;
7
7
  exports.makeDiskStore = makeDiskStore;
8
8
  var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
9
9
  var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/Function"));
10
- var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
10
+ var tsplus_module_3 = _interopRequireWildcard(require("@effect/io/FiberRef"));
11
+ var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Effect"));
11
12
  var fu = _interopRequireWildcard(require("@effect-app/infra-adapters/fileUtil"));
12
13
  var _fs = _interopRequireDefault(require("fs"));
14
+ var _console = require("console");
13
15
  var _Memory = require("./Memory.cjs");
14
16
  var _service = require("./service.cjs");
15
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -17,6 +19,27 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
17
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
20
  /* eslint-disable @typescript-eslint/no-explicit-any */
19
21
 
22
+ function makeDiskStoreInt(prefix, namespace, name, existing) {
23
+ return tsplus_module_1.gen(function* ($) {
24
+ const file = _console.dir + "/" + prefix + name + (namespace === "primary" ? "" : "-" + namespace) + ".json";
25
+ const fsStore = {
26
+ get: tsplus_module_1.orDie(tsplus_module_1.map(x => JSON.parse(x))(fu.readTextFile(file))),
27
+ setRaw: v => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
28
+ };
29
+ const store = yield* $((0, _Memory.makeMemoryStoreInt)(name, !_fs.default.existsSync(file) ? existing ?? tsplus_module_1.sync(() => new Map()) : tsplus_module_1.map(x => new Map(x.map(x => [x.id, x])))(fsStore.get)));
30
+ yield* $(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
31
+ const sem = tsplus_module_1.unsafeMakeSemaphore(1);
32
+ const withPermit = sem.withPermits(1);
33
+ const flushToDisk = withPermit(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
34
+ return {
35
+ ...store,
36
+ batchSet: tsplus_module_2.flow(store.batchSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
37
+ bulkSet: tsplus_module_2.flow(store.bulkSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
38
+ set: tsplus_module_2.flow(store.set, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
39
+ remove: tsplus_module_2.flow(store.remove, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t))
40
+ };
41
+ });
42
+ }
20
43
  /**
21
44
  * The Disk-backed store, flushes writes in background, but keeps the data in memory
22
45
  * and should therefore be as fast as the Memory Store.
@@ -30,26 +53,33 @@ function makeDiskStore({
30
53
  _fs.default.mkdirSync(dir);
31
54
  }
32
55
  return {
33
- make: (name, existing, _config) => tsplus_module_1.gen(function* ($) {
34
- const file = dir + "/" + prefix + name + ".json";
35
- const fsStore = {
36
- get: tsplus_module_1.orDie(tsplus_module_1.map(x => JSON.parse(x))(fu.readTextFile(file))),
37
- setRaw: v => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
38
- };
39
- const {
40
- make
41
- } = (0, _Memory.makeMemoryStore)();
42
- const store = yield* $(make(name, !_fs.default.existsSync(file) ? existing ?? tsplus_module_1.sync(() => new Map()) : tsplus_module_1.map(x => new Map(x.map(x => [x.id, x])))(fsStore.get)));
43
- yield* $(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
44
- const sem = tsplus_module_1.unsafeMakeSemaphore(1);
45
- const withPermit = sem.withPermits(1);
46
- const flushToDisk = withPermit(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
56
+ make: (name, existing, config) => tsplus_module_1.gen(function* ($) {
57
+ const storesSem = tsplus_module_1.unsafeMakeSemaphore(1);
58
+ const primary = yield* $(makeDiskStoreInt(prefix, "primary", name, existing));
59
+ const stores = new Map([["primary", primary]]);
60
+ const getStore = !config?.allowNamespace ? tsplus_module_1.succeed(primary) : tsplus_module_1.flatMap(namespace => {
61
+ const store = stores.get(namespace);
62
+ if (store) {
63
+ return tsplus_module_1.succeed(store);
64
+ }
65
+ if (!config.allowNamespace(namespace)) {
66
+ throw new Error(`Namespace ${namespace} not allowed!`);
67
+ }
68
+ return storesSem.withPermits(1)(tsplus_module_1.suspendSucceed(() => {
69
+ const existing = stores.get(namespace);
70
+ if (existing) return tsplus_module_1.sync(() => existing);
71
+ return tsplus_module_1.tap(store => tsplus_module_1.sync(() => stores.set(namespace, store)))(makeDiskStoreInt(prefix, namespace, name, existing));
72
+ }));
73
+ })(tsplus_module_3.get(_Memory.storeId));
47
74
  const s = {
48
- ...store,
49
- batchSet: tsplus_module_2.flow(store.batchSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
50
- bulkSet: tsplus_module_2.flow(store.bulkSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
51
- set: tsplus_module_2.flow(store.set, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
52
- remove: tsplus_module_2.flow(store.remove, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t))
75
+ all: tsplus_module_1.flatMap(_ => _.all)(getStore),
76
+ find: (...args) => tsplus_module_1.flatMap(_ => _.find(...args))(getStore),
77
+ filter: (...args) => tsplus_module_1.flatMap(_ => _.filter(...args))(getStore),
78
+ filterJoinSelect: (...args) => tsplus_module_1.flatMap(_ => _.filterJoinSelect(...args))(getStore),
79
+ set: (...args) => tsplus_module_1.flatMap(_ => _.set(...args))(getStore),
80
+ batchSet: (...args) => tsplus_module_1.flatMap(_ => _.batchSet(...args))(getStore),
81
+ bulkSet: (...args) => tsplus_module_1.flatMap(_ => _.bulkSet(...args))(getStore),
82
+ remove: (...args) => tsplus_module_1.flatMap(_ => _.remove(...args))(getStore)
53
83
  };
54
84
  return s;
55
85
  })
@@ -57,6 +87,6 @@ function makeDiskStore({
57
87
  });
58
88
  }
59
89
  function DiskStoreLive(config) {
60
- return tsplus_module_3.toLayer(tsplus_module_1.flatMap(makeDiskStore)(tsplus_module_1.config(config)), _service.StoreMaker);
90
+ return tsplus_module_4.toLayer(tsplus_module_1.flatMap(makeDiskStore)(tsplus_module_1.config(config)), _service.StoreMaker);
61
91
  }
62
92
  //# sourceMappingURL=Disk.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Disk.cjs","mappings":"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","names":["makeDiskStore","prefix","tsplus_module_1","dir","fs","existsSync","mkdirSync","make","name","existing","_config","$","file","fsStore","get","x","JSON","parse","fu","readTextFile","setRaw","v","stringify","undefined","json","writeTextFile","store","Map","map","id","all","sem","withPermit","withPermits","flushToDisk","s","batchSet","tsplus_module_2","t","err","console","error","bulkSet","set","remove","DiskStoreLive","config","tsplus_module_3","StoreMaker"],"sourceRoot":"","sources":["../../../_src/services/Store/Disk.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"Disk.cjs","mappings":"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","names":["makeDiskStoreInt","prefix","namespace","name","existing","tsplus_module_1","$","file","dir","fsStore","get","x","JSON","parse","fu","readTextFile","setRaw","v","stringify","undefined","json","writeTextFile","store","fs","existsSync","Map","map","id","all","sem","withPermit","withPermits","flushToDisk","batchSet","tsplus_module_2","t","err","console","error","bulkSet","set","remove","makeDiskStore","mkdirSync","make","config","storesSem","primary","stores","getStore","allowNamespace","Error","storeId","s","_","find","args","filter","filterJoinSelect","DiskStoreLive","tsplus_module_4","StoreMaker"],"sourceRoot":"","sources":["../../../_src/services/Store/Disk.ts"],"sourcesContent":[null]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.makeMemoryStore = exports.MemoryStoreLive = void 0;
7
+ exports.makeMemoryStoreInt = makeMemoryStoreInt;
7
8
  exports.memFilter = memFilter;
8
9
  exports.storeId = exports.restoreFromRequestContext = void 0;
9
10
  var tsplus_module_1 = _interopRequireWildcard(require("@effect/data/Chunk"));
@@ -44,48 +45,62 @@ const storeId = tsplus_module_5.unsafeMake("primary");
44
45
  exports.storeId = storeId;
45
46
  const restoreFromRequestContext = tsplus_module_7.serviceWithEffect(tsplus_module_6.tag, ctx => tsplus_module_5.set(ctx.parent?.namespace ?? ctx.namespace ?? "primary")(storeId));
46
47
  exports.restoreFromRequestContext = restoreFromRequestContext;
47
- const makeMemoryStore = () => ({
48
- make: (name, existing, config) => tsplus_module_7.gen(function* ($) {
48
+ function makeMemoryStoreInt(name, existing) {
49
+ return tsplus_module_7.gen(function* ($) {
49
50
  const updateETag = (0, _utils.makeUpdateETag)(name);
50
51
  const items = yield* $(existing ?? tsplus_module_7.sync(() => new Map()));
51
52
  const makeStore = () => new Map([...items.entries()].map(([id, e]) => [id, (0, _utils.makeETag)(e)]));
52
- const storesSem = tsplus_module_7.unsafeMakeSemaphore(1);
53
- const stores = new Map([["primary", tsplus_module_8.unsafeMake(makeStore())]]);
54
- const getStore = tsplus_module_7.flatMap(namespace => {
55
- const store = stores.get(namespace);
56
- if (!store) {
57
- if (!config?.allowNamespace || !config.allowNamespace(namespace)) {
58
- throw new Error(`Namespace ${namespace} not allowed!`);
59
- }
60
- return storesSem.withPermits(1)(tsplus_module_7.suspendSucceed(() => {
61
- const store = stores.get(namespace);
62
- if (store) return tsplus_module_8.get(store);
63
- const newStore = tsplus_module_8.unsafeMake(makeStore());
64
- stores.set(namespace, newStore);
65
- return tsplus_module_8.get(newStore);
66
- }));
67
- }
68
- return tsplus_module_8.get(store);
69
- })(tsplus_module_5.get(storeId));
70
- const setStore = m => tsplus_module_7.flatMap(namespace => tsplus_module_8.set(m)(stores.get(namespace)))(tsplus_module_5.get(storeId));
53
+ const store = tsplus_module_8.unsafeMake(makeStore());
71
54
  const sem = tsplus_module_7.unsafeMakeSemaphore(1);
72
55
  const withPermit = sem.withPermits(1);
73
- const values = tsplus_module_7.map(s => s.values())(getStore);
56
+ const values = tsplus_module_7.map(s => s.values())(tsplus_module_8.get(store));
74
57
  const all = tsplus_module_7.map(tsplus_module_1.fromIterable)(values);
75
- const batchSet = items => withPermit(tsplus_module_7.map(_ => _.toReadonlyArray())(tsplus_module_7.tap(items => tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(m => {
58
+ const batchSet = items => withPermit(tsplus_module_7.map(_ => _.toReadonlyArray())(tsplus_module_7.tap(items => tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(m => {
76
59
  const mut = m;
77
60
  items.forEach(e => mut.set(e.id, e));
78
61
  return mut;
79
- })(getStore)))(tsplus_module_9.ext_forEach(items, i => tsplus_module_7.flatMap(current => updateETag(i, current))(s.find(i.id))))));
62
+ })(tsplus_module_8.get(store))))(tsplus_module_9.ext_forEach(items, i => tsplus_module_7.flatMap(current => updateETag(i, current))(s.find(i.id))))));
80
63
  const s = {
81
64
  all,
82
- find: id => tsplus_module_7.map(_ => tsplus_module_3.fromNullable(_.get(id)))(getStore),
65
+ find: id => tsplus_module_7.map(_ => tsplus_module_3.fromNullable(_.get(id)))(tsplus_module_8.get(store)),
83
66
  filter: (filter, cursor) => tsplus_module_7.map(memFilter(filter, cursor))(all),
84
67
  filterJoinSelect: filter => tsplus_module_7.map(c => c.flatMap((0, _utils.codeFilterJoinSelect)(filter)))(all),
85
- set: e => withPermit(tsplus_module_7.tap(e => tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(_ => new Map([..._, [e.id, e]]))(getStore)))(tsplus_module_7.flatMap(current => updateETag(e, current))(s.find(e.id)))),
68
+ set: e => withPermit(tsplus_module_7.tap(e => tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(_ => new Map([..._, [e.id, e]]))(tsplus_module_8.get(store))))(tsplus_module_7.flatMap(current => updateETag(e, current))(s.find(e.id)))),
86
69
  batchSet,
87
70
  bulkSet: batchSet,
88
- remove: e => withPermit(tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(getStore)))
71
+ remove: e => withPermit(tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(tsplus_module_8.get(store))))
72
+ };
73
+ return s;
74
+ });
75
+ }
76
+ const makeMemoryStore = () => ({
77
+ make: (name, existing, config) => tsplus_module_7.gen(function* ($) {
78
+ const storesSem = tsplus_module_7.unsafeMakeSemaphore(1);
79
+ const primary = yield* $(makeMemoryStoreInt(name, existing));
80
+ const stores = new Map([["primary", primary]]);
81
+ const getStore = !config?.allowNamespace ? tsplus_module_7.succeed(primary) : tsplus_module_7.flatMap(namespace => {
82
+ const store = stores.get(namespace);
83
+ if (store) {
84
+ return tsplus_module_7.succeed(store);
85
+ }
86
+ if (!config.allowNamespace(namespace)) {
87
+ throw new Error(`Namespace ${namespace} not allowed!`);
88
+ }
89
+ return storesSem.withPermits(1)(tsplus_module_7.suspendSucceed(() => {
90
+ const store = stores.get(namespace);
91
+ if (store) return tsplus_module_7.sync(() => store);
92
+ return tsplus_module_7.tap(store => tsplus_module_7.sync(() => stores.set(namespace, store)))(makeMemoryStoreInt(name, existing));
93
+ }));
94
+ })(tsplus_module_5.get(storeId));
95
+ const s = {
96
+ all: tsplus_module_7.flatMap(_ => _.all)(getStore),
97
+ find: (...args) => tsplus_module_7.flatMap(_ => _.find(...args))(getStore),
98
+ filter: (...args) => tsplus_module_7.flatMap(_ => _.filter(...args))(getStore),
99
+ filterJoinSelect: (...args) => tsplus_module_7.flatMap(_ => _.filterJoinSelect(...args))(getStore),
100
+ set: (...args) => tsplus_module_7.flatMap(_ => _.set(...args))(getStore),
101
+ batchSet: (...args) => tsplus_module_7.flatMap(_ => _.batchSet(...args))(getStore),
102
+ bulkSet: (...args) => tsplus_module_7.flatMap(_ => _.bulkSet(...args))(getStore),
103
+ remove: (...args) => tsplus_module_7.flatMap(_ => _.remove(...args))(getStore)
89
104
  };
90
105
  return s;
91
106
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Memory.cjs","mappings":"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","names":["memFilter","filter","cursor","c","skip","limit","tsplus_module_3","tsplus_module_1","r","undefined","storeId","tsplus_module_5","restoreFromRequestContext","tsplus_module_7","ctx","parent","namespace","makeMemoryStore","make","name","existing","config","$","updateETag","items","Map","makeStore","entries","map","id","e","storesSem","stores","tsplus_module_8","getStore","store","get","allowNamespace","Error","withPermits","newStore","set","setStore","m","sem","withPermit","values","s","all","batchSet","_","toReadonlyArray","mut","forEach","tsplus_module_9","i","current","find","filterJoinSelect","flatMap","bulkSet","remove","MemoryStoreLive","tsplus_module_10"],"sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"Memory.cjs","mappings":"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","names":["memFilter","filter","cursor","c","skip","limit","tsplus_module_3","tsplus_module_1","r","undefined","storeId","tsplus_module_5","restoreFromRequestContext","tsplus_module_7","ctx","parent","namespace","makeMemoryStoreInt","name","existing","$","updateETag","items","Map","makeStore","entries","map","id","e","store","tsplus_module_8","sem","withPermit","withPermits","values","s","all","batchSet","_","toReadonlyArray","m","mut","forEach","set","tsplus_module_9","i","current","find","get","filterJoinSelect","flatMap","bulkSet","remove","makeMemoryStore","make","config","storesSem","primary","stores","getStore","allowNamespace","Error","args","MemoryStoreLive","tsplus_module_10"],"sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"sourcesContent":[null]}
@@ -3,10 +3,63 @@ import * as fu from "@effect-app/infra-adapters/fileUtil"
3
3
 
4
4
  import fs from "fs"
5
5
 
6
- import { makeMemoryStore } from "./Memory.js"
6
+ import { dir } from "console"
7
+ import { makeMemoryStoreInt, storeId } from "./Memory.js"
7
8
  import type { PersistenceModelType, StorageConfig, Store, StoreConfig } from "./service.js"
8
9
  import { StoreMaker } from "./service.js"
9
10
 
11
+ function makeDiskStoreInt<Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(
12
+ prefix: string,
13
+ namespace: string,
14
+ name: string,
15
+ existing?: Effect<never, never, ReadonlyMap<Id2, PM>>
16
+ ) {
17
+ return Effect.gen(function*($) {
18
+ const file = dir + "/" + prefix + name + (namespace === "primary" ? "" : "-" + namespace) + ".json"
19
+ const fsStore = {
20
+ get: fu
21
+ .readTextFile(file)
22
+ .map(x => JSON.parse(x) as PM[])
23
+ .orDie,
24
+ setRaw: (v: Iterable<PM>) => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
25
+ }
26
+
27
+ const store = yield* $(
28
+ makeMemoryStoreInt<Id, Id, PM>(
29
+ name,
30
+ !fs.existsSync(file)
31
+ ? existing ?? Effect(new Map())
32
+ : fsStore.get.map(x => new Map(x.map(x => [x.id, x] as const)))
33
+ )
34
+ )
35
+
36
+ yield* $(store.all.flatMap(fsStore.setRaw))
37
+
38
+ const sem = Semaphore.unsafeMake(1)
39
+ const withPermit = sem.withPermits(1)
40
+ const flushToDisk = store.all.flatMap(fsStore.setRaw).apply(withPermit)
41
+ return {
42
+ ...store,
43
+ batchSet: flow(
44
+ store.batchSet,
45
+ t => t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)
46
+ ),
47
+ bulkSet: flow(
48
+ store.bulkSet,
49
+ t => t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)
50
+ ),
51
+ set: flow(
52
+ store.set,
53
+ t => t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)
54
+ ),
55
+ remove: flow(
56
+ store.remove,
57
+ t => t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)
58
+ )
59
+ } satisfies Store<PM, Id>
60
+ })
61
+ }
62
+
10
63
  /**
11
64
  * The Disk-backed store, flushes writes in background, but keeps the data in memory
12
65
  * and should therefore be as fast as the Memory Store.
@@ -18,55 +71,43 @@ export function makeDiskStore({ prefix }: StorageConfig) {
18
71
  fs.mkdirSync(dir)
19
72
  }
20
73
  return {
21
- make: <Id extends string, Id2 extends Id, E extends PersistenceModelType<Id>>(
74
+ make: <Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(
22
75
  name: string,
23
- existing?: Effect<never, never, ReadonlyMap<Id2, E>>,
24
- _config?: StoreConfig<E>
76
+ existing?: Effect<never, never, ReadonlyMap<Id2, PM>>,
77
+ config?: StoreConfig<PM>
25
78
  ) =>
26
79
  Effect.gen(function*($) {
27
- const file = dir + "/" + prefix + name + ".json"
28
- const fsStore = {
29
- get: fu
30
- .readTextFile(file)
31
- .map(x => JSON.parse(x) as E[])
32
- .orDie,
33
- setRaw: (v: Iterable<E>) => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
34
- }
35
-
36
- const { make } = makeMemoryStore()
37
-
38
- const store = yield* $(
39
- make<Id, Id, E>(
40
- name,
41
- !fs.existsSync(file)
42
- ? existing ?? Effect(new Map())
43
- : fsStore.get.map(x => new Map(x.map(x => [x.id, x] as const)))
80
+ const storesSem = Semaphore.unsafeMake(1)
81
+ const primary = yield* $(makeDiskStoreInt(prefix, "primary", name, existing))
82
+ const stores = new Map<string, Store<PM, Id>>([["primary", primary]])
83
+ const getStore = !config?.allowNamespace ? Effect.succeed(primary) : storeId.get.flatMap(namespace => {
84
+ const store = stores.get(namespace)
85
+ if (store) {
86
+ return Effect.succeed(store)
87
+ }
88
+ if (!config.allowNamespace!(namespace)) {
89
+ throw new Error(`Namespace ${namespace} not allowed!`)
90
+ }
91
+ return storesSem.withPermits(1)(
92
+ Effect.suspendSucceed(() => {
93
+ const existing = stores.get(namespace)
94
+ if (existing) return Effect(existing)
95
+ return makeDiskStoreInt<Id, Id2, PM>(prefix, namespace, name, existing).tap(store =>
96
+ Effect.sync(() => stores.set(namespace, store))
97
+ )
98
+ })
44
99
  )
45
- )
46
-
47
- yield* $(store.all.flatMap(fsStore.setRaw))
100
+ })
48
101
 
49
- const sem = Semaphore.unsafeMake(1)
50
- const withPermit = sem.withPermits(1)
51
- const flushToDisk = store.all.flatMap(fsStore.setRaw).apply(withPermit)
52
- const s: Store<E, Id> = {
53
- ...store,
54
- batchSet: flow(store.batchSet, t =>
55
- t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)),
56
- bulkSet: flow(store.bulkSet, t =>
57
- t.tap(() =>
58
- flushToDisk.tapErrorCause(err =>
59
- Effect(console.error(err))
60
- ).forkDaemon
61
- )),
62
- set: flow(store.set, t =>
63
- t.tap(() => flushToDisk.tapErrorCause(err => Effect(console.error(err))).forkDaemon)),
64
- remove: flow(store.remove, t =>
65
- t.tap(() =>
66
- flushToDisk.tapErrorCause(err =>
67
- Effect(console.error(err))
68
- ).forkDaemon
69
- ))
102
+ const s: Store<PM, Id> = {
103
+ all: getStore.flatMap(_ => _.all),
104
+ find: (...args) => getStore.flatMap(_ => _.find(...args)),
105
+ filter: (...args) => getStore.flatMap(_ => _.filter(...args)),
106
+ filterJoinSelect: (...args) => getStore.flatMap(_ => _.filterJoinSelect(...args)),
107
+ set: (...args) => getStore.flatMap(_ => _.set(...args)),
108
+ batchSet: (...args) => getStore.flatMap(_ => _.batchSet(...args)),
109
+ bulkSet: (...args) => getStore.flatMap(_ => _.bulkSet(...args)),
110
+ remove: (...args) => getStore.flatMap(_ => _.remove(...args))
70
111
  }
71
112
  return s
72
113
  })
@@ -28,6 +28,55 @@ export const restoreFromRequestContext = RequestContext.Tag.accessWithEffect(ctx
28
28
  storeId.set(ctx.parent?.namespace ?? ctx.namespace ?? "primary")
29
29
  )
30
30
 
31
+ export function makeMemoryStoreInt<Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(
32
+ name: string,
33
+ existing?: Effect<never, never, ReadonlyMap<Id2, PM>>
34
+ ) {
35
+ return Effect.gen(function*($) {
36
+ const updateETag = makeUpdateETag(name)
37
+ const items: ReadonlyMap<Id, PM> = yield* $(existing ?? Effect(new Map<Id, PM>()))
38
+ const makeStore = (): ReadonlyMap<Id, PM> => new Map([...items.entries()].map(([id, e]) => [id, makeETag(e)]))
39
+ const store = Ref.unsafeMake(makeStore())
40
+ const sem = Semaphore.unsafeMake(1)
41
+ const withPermit = sem.withPermits(1)
42
+ const values = store.get.map(s => s.values())
43
+ const all = values.map(Chunk.fromIterable)
44
+ const batchSet = (items: NonEmptyReadonlyArray<PM>) =>
45
+ items
46
+ .forEachEffect(i => s.find(i.id).flatMap(current => updateETag(i, current)))
47
+ .tap(items =>
48
+ store.get
49
+ .map(m => {
50
+ const mut = m as Map<Id, PM>
51
+ items.forEach(e => mut.set(e.id, e))
52
+ return mut
53
+ })
54
+ .flatMap(_ => store.set(_))
55
+ )
56
+ .map(_ => _.toReadonlyArray() as NonEmptyReadonlyArray<PM>)
57
+ .apply(withPermit)
58
+ const s: Store<PM, Id> = {
59
+ all,
60
+ find: id => store.get.map(_ => Option.fromNullable(_.get(id))),
61
+ filter: (filter: Filter<PM>, cursor?: { skip?: number; limit?: number }) => all.map(memFilter(filter, cursor)),
62
+ filterJoinSelect: <T extends object>(filter: FilterJoinSelect) =>
63
+ all.map(c => c.flatMap(codeFilterJoinSelect<PM, T>(filter))),
64
+ set: e =>
65
+ s
66
+ .find(e.id)
67
+ .flatMap(current => updateETag(e, current))
68
+ .tap(e => store.get.map(_ => new Map([..._, [e.id, e]])).flatMap(_ => store.set(_)))
69
+ .apply(withPermit),
70
+ batchSet,
71
+ bulkSet: batchSet,
72
+ remove: (e: PM) =>
73
+ store.get.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))
74
+ .flatMap(_ => store.set(_)).apply(withPermit)
75
+ }
76
+ return s
77
+ })
78
+ }
79
+
31
80
  export const makeMemoryStore = () => ({
32
81
  make: <Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(
33
82
  name: string,
@@ -35,63 +84,32 @@ export const makeMemoryStore = () => ({
35
84
  config?: StoreConfig<PM>
36
85
  ) =>
37
86
  Effect.gen(function*($) {
38
- const updateETag = makeUpdateETag(name)
39
- const items: ReadonlyMap<Id, PM> = yield* $(existing ?? Effect(new Map<Id, PM>()))
40
- const makeStore = (): ReadonlyMap<Id, PM> => new Map([...items.entries()].map(([id, e]) => [id, makeETag(e)]))
41
87
  const storesSem = Semaphore.unsafeMake(1)
42
- const stores = new Map([["primary", Ref.unsafeMake(makeStore())]])
43
- const getStore = storeId.get.flatMap(namespace => {
88
+ const primary = yield* $(makeMemoryStoreInt<Id, Id2, PM>(name, existing))
89
+ const stores = new Map([["primary", primary]])
90
+ const getStore = !config?.allowNamespace ? Effect.succeed(primary) : storeId.get.flatMap(namespace => {
44
91
  const store = stores.get(namespace)
45
- if (!store) {
46
- if (!config?.allowNamespace || !config.allowNamespace(namespace)) {
47
- throw new Error(`Namespace ${namespace} not allowed!`)
48
- }
49
- return storesSem.withPermits(1)(Effect.suspendSucceed(() => {
50
- const store = stores.get(namespace)
51
- if (store) return store.get
52
- const newStore = Ref.unsafeMake(makeStore())
53
- stores.set(namespace, newStore)
54
- return newStore.get
55
- }))
92
+ if (store) {
93
+ return Effect.succeed(store)
94
+ }
95
+ if (!config.allowNamespace!(namespace)) {
96
+ throw new Error(`Namespace ${namespace} not allowed!`)
56
97
  }
57
- return store.get
98
+ return storesSem.withPermits(1)(Effect.suspendSucceed(() => {
99
+ const store = stores.get(namespace)
100
+ if (store) return Effect(store)
101
+ return makeMemoryStoreInt(name, existing).tap(store => Effect.sync(() => stores.set(namespace, store)))
102
+ }))
58
103
  })
59
- const setStore = (m: any) => storeId.get.flatMap(namespace => stores.get(namespace)!.set(m))
60
- const sem = Semaphore.unsafeMake(1)
61
- const withPermit = sem.withPermits(1)
62
- const values = getStore.map(s => s.values())
63
- const all = values.map(Chunk.fromIterable)
64
- const batchSet = (items: NonEmptyReadonlyArray<PM>) =>
65
- items
66
- .forEachEffect(i => s.find(i.id).flatMap(current => updateETag(i, current)))
67
- .tap(items =>
68
- getStore
69
- .map(m => {
70
- const mut = m as Map<Id, PM>
71
- items.forEach(e => mut.set(e.id, e))
72
- return mut
73
- })
74
- .flatMap(_ => setStore(_))
75
- )
76
- .map(_ => _.toReadonlyArray() as NonEmptyReadonlyArray<PM>)
77
- .apply(withPermit)
78
104
  const s: Store<PM, Id> = {
79
- all,
80
- find: id => getStore.map(_ => Option.fromNullable(_.get(id))),
81
- filter: (filter: Filter<PM>, cursor?: { skip?: number; limit?: number }) => all.map(memFilter(filter, cursor)),
82
- filterJoinSelect: <T extends object>(filter: FilterJoinSelect) =>
83
- all.map(c => c.flatMap(codeFilterJoinSelect<PM, T>(filter))),
84
- set: e =>
85
- s
86
- .find(e.id)
87
- .flatMap(current => updateETag(e, current))
88
- .tap(e => getStore.map(_ => new Map([..._, [e.id, e]])).flatMap(_ => setStore(_)))
89
- .apply(withPermit),
90
- batchSet,
91
- bulkSet: batchSet,
92
- remove: (e: PM) =>
93
- getStore.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))
94
- .flatMap(_ => setStore(_)).apply(withPermit)
105
+ all: getStore.flatMap(_ => _.all),
106
+ find: (...args) => getStore.flatMap(_ => _.find(...args)),
107
+ filter: (...args) => getStore.flatMap(_ => _.filter(...args)),
108
+ filterJoinSelect: (...args) => getStore.flatMap(_ => _.filterJoinSelect(...args)),
109
+ set: (...args) => getStore.flatMap(_ => _.set(...args)),
110
+ batchSet: (...args) => getStore.flatMap(_ => _.batchSet(...args)),
111
+ bulkSet: (...args) => getStore.flatMap(_ => _.bulkSet(...args)),
112
+ remove: (...args) => getStore.flatMap(_ => _.remove(...args))
95
113
  }
96
114
  return s
97
115
  })
@@ -7,7 +7,7 @@ import { StoreMaker } from "./service.js";
7
7
  * and should therefore be as fast as the Memory Store.
8
8
  */
9
9
  export declare function makeDiskStore({ prefix }: StorageConfig): import("@effect/io/Effect").Effect<never, never, {
10
- make: <Id extends string, Id2 extends Id, E extends PersistenceModelType<Id>>(name: string, existing?: import("@effect/io/Effect").Effect<never, never, ReadonlyMap<Id2, E>> | undefined, _config?: StoreConfig<E> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<E, Id>>;
10
+ make: <Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(name: string, existing?: import("@effect/io/Effect").Effect<never, never, ReadonlyMap<Id2, PM>> | undefined, config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
11
11
  }>;
12
12
  export declare function DiskStoreLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/Config/Error").ConfigError, StoreMaker>;
13
13
  //# sourceMappingURL=Disk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Disk.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Disk.ts"],"names":[],"mappings":";;AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;wFAQzC,MAAM;GAqDnB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,sGAI1D"}
1
+ {"version":3,"file":"Disk.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Disk.ts"],"names":[],"mappings":";;AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsDzC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;yFAQzC,MAAM;GAyCnB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,sGAI1D"}
@@ -1,11 +1,37 @@
1
1
  import * as tsplus_module_1 from "@effect/io/Effect";
2
2
  import * as tsplus_module_2 from "@effect-app/core/Function";
3
- import * as tsplus_module_3 from "@effect-app/core/Effect";
3
+ import * as tsplus_module_3 from "@effect/io/FiberRef";
4
+ import * as tsplus_module_4 from "@effect-app/core/Effect";
4
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
6
  import * as fu from "@effect-app/infra-adapters/fileUtil";
6
7
  import fs from "fs";
7
- import { makeMemoryStore } from "./Memory.js";
8
+ import { dir } from "console";
9
+ import { makeMemoryStoreInt, storeId } from "./Memory.js";
8
10
  import { StoreMaker } from "./service.js";
11
+ function makeDiskStoreInt(prefix, namespace, name, existing) {
12
+ return tsplus_module_1.gen(function* ($) {
13
+ const file = dir + "/" + prefix + name + (namespace === "primary" ? "" : "-" + namespace) + ".json";
14
+ const fsStore = {
15
+ get: tsplus_module_1.orDie(tsplus_module_1.map(x => JSON.parse(x))(fu
16
+ .readTextFile(file))),
17
+ setRaw: (v) => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
18
+ };
19
+ const store = yield* $(makeMemoryStoreInt(name, !fs.existsSync(file)
20
+ ? existing ?? tsplus_module_1.sync(() => new Map())
21
+ : tsplus_module_1.map(x => new Map(x.map(x => [x.id, x])))(fsStore.get)));
22
+ yield* $(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
23
+ const sem = tsplus_module_1.unsafeMakeSemaphore(1);
24
+ const withPermit = sem.withPermits(1);
25
+ const flushToDisk = withPermit(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
26
+ return {
27
+ ...store,
28
+ batchSet: tsplus_module_2.flow(store.batchSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
29
+ bulkSet: tsplus_module_2.flow(store.bulkSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
30
+ set: tsplus_module_2.flow(store.set, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
31
+ remove: tsplus_module_2.flow(store.remove, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t))
32
+ };
33
+ });
34
+ }
9
35
  /**
10
36
  * The Disk-backed store, flushes writes in background, but keeps the data in memory
11
37
  * and should therefore be as fast as the Memory Store.
@@ -17,27 +43,34 @@ export function makeDiskStore({ prefix }) {
17
43
  fs.mkdirSync(dir);
18
44
  }
19
45
  return {
20
- make: (name, existing, _config) => tsplus_module_1.gen(function* ($) {
21
- const file = dir + "/" + prefix + name + ".json";
22
- const fsStore = {
23
- get: tsplus_module_1.orDie(tsplus_module_1.map(x => JSON.parse(x))(fu
24
- .readTextFile(file))),
25
- setRaw: (v) => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
26
- };
27
- const { make } = makeMemoryStore();
28
- const store = yield* $(make(name, !fs.existsSync(file)
29
- ? existing ?? tsplus_module_1.sync(() => new Map())
30
- : tsplus_module_1.map(x => new Map(x.map(x => [x.id, x])))(fsStore.get)));
31
- yield* $(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
32
- const sem = tsplus_module_1.unsafeMakeSemaphore(1);
33
- const withPermit = sem.withPermits(1);
34
- const flushToDisk = withPermit(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
46
+ make: (name, existing, config) => tsplus_module_1.gen(function* ($) {
47
+ const storesSem = tsplus_module_1.unsafeMakeSemaphore(1);
48
+ const primary = yield* $(makeDiskStoreInt(prefix, "primary", name, existing));
49
+ const stores = new Map([["primary", primary]]);
50
+ const getStore = !config?.allowNamespace ? tsplus_module_1.succeed(primary) : tsplus_module_1.flatMap(namespace => {
51
+ const store = stores.get(namespace);
52
+ if (store) {
53
+ return tsplus_module_1.succeed(store);
54
+ }
55
+ if (!config.allowNamespace(namespace)) {
56
+ throw new Error(`Namespace ${namespace} not allowed!`);
57
+ }
58
+ return storesSem.withPermits(1)(tsplus_module_1.suspendSucceed(() => {
59
+ const existing = stores.get(namespace);
60
+ if (existing)
61
+ return tsplus_module_1.sync(() => existing);
62
+ return tsplus_module_1.tap(store => tsplus_module_1.sync(() => stores.set(namespace, store)))(makeDiskStoreInt(prefix, namespace, name, existing));
63
+ }));
64
+ })(tsplus_module_3.get(storeId));
35
65
  const s = {
36
- ...store,
37
- batchSet: tsplus_module_2.flow(store.batchSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
38
- bulkSet: tsplus_module_2.flow(store.bulkSet, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
39
- set: tsplus_module_2.flow(store.set, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t)),
40
- remove: tsplus_module_2.flow(store.remove, t => tsplus_module_1.tap(() => tsplus_module_1.forkDaemon(tsplus_module_1.tapErrorCause(err => tsplus_module_1.sync(() => console.error(err)))(flushToDisk)))(t))
66
+ all: tsplus_module_1.flatMap(_ => _.all)(getStore),
67
+ find: (...args) => tsplus_module_1.flatMap(_ => _.find(...args))(getStore),
68
+ filter: (...args) => tsplus_module_1.flatMap(_ => _.filter(...args))(getStore),
69
+ filterJoinSelect: (...args) => tsplus_module_1.flatMap(_ => _.filterJoinSelect(...args))(getStore),
70
+ set: (...args) => tsplus_module_1.flatMap(_ => _.set(...args))(getStore),
71
+ batchSet: (...args) => tsplus_module_1.flatMap(_ => _.batchSet(...args))(getStore),
72
+ bulkSet: (...args) => tsplus_module_1.flatMap(_ => _.bulkSet(...args))(getStore),
73
+ remove: (...args) => tsplus_module_1.flatMap(_ => _.remove(...args))(getStore)
41
74
  };
42
75
  return s;
43
76
  })
@@ -45,6 +78,6 @@ export function makeDiskStore({ prefix }) {
45
78
  });
46
79
  }
47
80
  export function DiskStoreLive(config) {
48
- return tsplus_module_3.toLayer(tsplus_module_1.flatMap(makeDiskStore)(tsplus_module_1.config(config)), StoreMaker);
81
+ return tsplus_module_4.toLayer(tsplus_module_1.flatMap(makeDiskStore)(tsplus_module_1.config(config)), StoreMaker);
49
82
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvRGlzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUU3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQWlCO0lBQ3JELE9BQU8scUJBQVksR0FBRyxFQUFFO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQTtRQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ2xCO1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxDQUNKLElBQVksRUFDWixRQUFvRCxFQUNwRCxPQUF3QixFQUN4QixFQUFFLENBQ0Ysb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQTtnQkFDaEQsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsR0FBRyx3QkFBRSxvQkFFRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFRLEVBRjNCLEVBQUU7eUJBQ0osWUFBWSxDQUFDLElBQUksQ0FBQyxDQUNZLENBQ3pCO29CQUNSLE1BQU0sRUFBRSxDQUFDLENBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FB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
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvRGlzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFFekQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLFNBQVMsZ0JBQWdCLENBQ3ZCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixJQUFZLEVBQ1osUUFBcUQ7SUFFckQsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQTtRQUNuRyxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsd0JBQUUsb0JBRUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUyxFQUY1QixFQUFFO2lCQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FDYSxDQUMxQjtZQUNSLE1BQU0sRUFBRSxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJ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
@@ -12,6 +12,7 @@ export declare function memFilter<T extends {
12
12
  }): (c: Chunk<T>) => Chunk<T>;
13
13
  export declare const storeId: import("@effect/io/FiberRef").FiberRef<string>;
14
14
  export declare const restoreFromRequestContext: import("@effect/io/Effect").Effect<RequestContext, never, void>;
15
+ export declare function makeMemoryStoreInt<Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(name: string, existing?: Effect<never, never, ReadonlyMap<Id2, PM>>): import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
15
16
  export declare const makeMemoryStore: () => {
16
17
  make: <Id extends string, Id2 extends Id, PM extends PersistenceModelType<Id>>(name: string, existing?: import("@effect/io/Effect").Effect<never, never, ReadonlyMap<Id2, PM>> | undefined, config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
17
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAoB,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,OACnG,MAAM,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAehC;AAED,eAAO,MAAM,OAAO,gDAAiC,CAAA;AACrD,eAAO,MAAM,yBAAyB,iEAErC,CAAA;AAED,eAAO,MAAM,eAAe;yFAElB,MAAM;CAiEd,CAAA;AAEF,eAAO,MAAM,eAAe,4DAA0C,CAAA"}
1
+ {"version":3,"file":"Memory.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAoB,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,OACnG,MAAM,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CAehC;AAED,eAAO,MAAM,OAAO,gDAAiC,CAAA;AACrD,eAAO,MAAM,yBAAyB,iEAErC,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,SAAS,oBAAoB,CAAC,EAAE,CAAC,EACvG,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mEA6CtD;AAED,eAAO,MAAM,eAAe;yFAElB,MAAM;CAkCd,CAAA;AAEF,eAAO,MAAM,eAAe,4DAA0C,CAAA"}
@@ -31,53 +31,67 @@ export function memFilter(filter, cursor) {
31
31
  }
32
32
  export const storeId = tsplus_module_5.unsafeMake("primary");
33
33
  export const restoreFromRequestContext = tsplus_module_7.serviceWithEffect(tsplus_module_6.tag, ctx => tsplus_module_5.set(ctx.parent?.namespace ?? ctx.namespace ?? "primary")(storeId));
34
- export const makeMemoryStore = () => ({
35
- make: (name, existing, config) => tsplus_module_7.gen(function* ($) {
34
+ export function makeMemoryStoreInt(name, existing) {
35
+ return tsplus_module_7.gen(function* ($) {
36
36
  const updateETag = makeUpdateETag(name);
37
37
  const items = yield* $(existing ?? tsplus_module_7.sync(() => new Map()));
38
38
  const makeStore = () => new Map([...items.entries()].map(([id, e]) => [id, makeETag(e)]));
39
- const storesSem = tsplus_module_7.unsafeMakeSemaphore(1);
40
- const stores = new Map([["primary", tsplus_module_8.unsafeMake(makeStore())]]);
41
- const getStore = tsplus_module_7.flatMap(namespace => {
42
- const store = stores.get(namespace);
43
- if (!store) {
44
- if (!config?.allowNamespace || !config.allowNamespace(namespace)) {
45
- throw new Error(`Namespace ${namespace} not allowed!`);
46
- }
47
- return storesSem.withPermits(1)(tsplus_module_7.suspendSucceed(() => {
48
- const store = stores.get(namespace);
49
- if (store)
50
- return tsplus_module_8.get(store);
51
- const newStore = tsplus_module_8.unsafeMake(makeStore());
52
- stores.set(namespace, newStore);
53
- return tsplus_module_8.get(newStore);
54
- }));
55
- }
56
- return tsplus_module_8.get(store);
57
- })(tsplus_module_5.get(storeId));
58
- const setStore = (m) => tsplus_module_7.flatMap(namespace => tsplus_module_8.set(m)(stores.get(namespace)))(tsplus_module_5.get(storeId));
39
+ const store = tsplus_module_8.unsafeMake(makeStore());
59
40
  const sem = tsplus_module_7.unsafeMakeSemaphore(1);
60
41
  const withPermit = sem.withPermits(1);
61
- const values = tsplus_module_7.map(s => s.values())(getStore);
42
+ const values = tsplus_module_7.map(s => s.values())(tsplus_module_8.get(store));
62
43
  const all = tsplus_module_7.map(tsplus_module_1.fromIterable)(values);
63
- const batchSet = (items) => withPermit(tsplus_module_7.map(_ => _.toReadonlyArray())(tsplus_module_7.tap(items => tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(m => {
44
+ const batchSet = (items) => withPermit(tsplus_module_7.map(_ => _.toReadonlyArray())(tsplus_module_7.tap(items => tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(m => {
64
45
  const mut = m;
65
46
  items.forEach(e => mut.set(e.id, e));
66
47
  return mut;
67
- })(getStore)))(tsplus_module_9.ext_forEach(items, i => tsplus_module_7.flatMap(current => updateETag(i, current))(s.find(i.id))))));
48
+ })(tsplus_module_8.get(store))))(tsplus_module_9.ext_forEach(items, i => tsplus_module_7.flatMap(current => updateETag(i, current))(s.find(i.id))))));
68
49
  const s = {
69
50
  all,
70
- find: id => tsplus_module_7.map(_ => tsplus_module_3.fromNullable(_.get(id)))(getStore),
51
+ find: id => tsplus_module_7.map(_ => tsplus_module_3.fromNullable(_.get(id)))(tsplus_module_8.get(store)),
71
52
  filter: (filter, cursor) => tsplus_module_7.map(memFilter(filter, cursor))(all),
72
53
  filterJoinSelect: (filter) => tsplus_module_7.map(c => c.flatMap(codeFilterJoinSelect(filter)))(all),
73
- set: e => withPermit(tsplus_module_7.tap(e => tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(_ => new Map([..._, [e.id, e]]))(getStore)))(tsplus_module_7.flatMap(current => updateETag(e, current))(s
54
+ set: e => withPermit(tsplus_module_7.tap(e => tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(_ => new Map([..._, [e.id, e]]))(tsplus_module_8.get(store))))(tsplus_module_7.flatMap(current => updateETag(e, current))(s
74
55
  .find(e.id)))),
75
56
  batchSet,
76
57
  bulkSet: batchSet,
77
- remove: (e) => withPermit(tsplus_module_7.flatMap(_ => setStore(_))(tsplus_module_7.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(getStore)))
58
+ remove: (e) => withPermit(tsplus_module_7.flatMap(_ => tsplus_module_8.set(_)(store))(tsplus_module_7.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(tsplus_module_8.get(store))))
59
+ };
60
+ return s;
61
+ });
62
+ }
63
+ export const makeMemoryStore = () => ({
64
+ make: (name, existing, config) => tsplus_module_7.gen(function* ($) {
65
+ const storesSem = tsplus_module_7.unsafeMakeSemaphore(1);
66
+ const primary = yield* $(makeMemoryStoreInt(name, existing));
67
+ const stores = new Map([["primary", primary]]);
68
+ const getStore = !config?.allowNamespace ? tsplus_module_7.succeed(primary) : tsplus_module_7.flatMap(namespace => {
69
+ const store = stores.get(namespace);
70
+ if (store) {
71
+ return tsplus_module_7.succeed(store);
72
+ }
73
+ if (!config.allowNamespace(namespace)) {
74
+ throw new Error(`Namespace ${namespace} not allowed!`);
75
+ }
76
+ return storesSem.withPermits(1)(tsplus_module_7.suspendSucceed(() => {
77
+ const store = stores.get(namespace);
78
+ if (store)
79
+ return tsplus_module_7.sync(() => store);
80
+ return tsplus_module_7.tap(store => tsplus_module_7.sync(() => stores.set(namespace, store)))(makeMemoryStoreInt(name, existing));
81
+ }));
82
+ })(tsplus_module_5.get(storeId));
83
+ const s = {
84
+ all: tsplus_module_7.flatMap(_ => _.all)(getStore),
85
+ find: (...args) => tsplus_module_7.flatMap(_ => _.find(...args))(getStore),
86
+ filter: (...args) => tsplus_module_7.flatMap(_ => _.filter(...args))(getStore),
87
+ filterJoinSelect: (...args) => tsplus_module_7.flatMap(_ => _.filterJoinSelect(...args))(getStore),
88
+ set: (...args) => tsplus_module_7.flatMap(_ => _.set(...args))(getStore),
89
+ batchSet: (...args) => tsplus_module_7.flatMap(_ => _.batchSet(...args))(getStore),
90
+ bulkSet: (...args) => tsplus_module_7.flatMap(_ => _.bulkSet(...args))(getStore),
91
+ remove: (...args) => tsplus_module_7.flatMap(_ => _.remove(...args))(getStore)
78
92
  };
79
93
  return s;
80
94
  })
81
95
  });
82
96
  export const MemoryStoreLive = tsplus_module_10.makeLayer(StoreMaker, makeMemoryStore());
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUErQix5QkFBeUIsQ0FBQTtBQUV4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV2RixNQUFNLFVBQVUsU0FBUyxDQUEyQixNQUFpQixFQUFFLE1BQTBDO0lBQy9HLE9BQU8sQ0FBQyxDQUFDLENBQVcsRUFBWSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUE7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTywwQkFBNkQsR0FBRyxFQUFFLENBQUMsdUJBQWEsRUFBaEYsMENBQUEsNkJBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFqQyxDQUFDLENBQWlDLENBQWdCLENBQStCLENBQUE7U0FDekY7UUFDRCxJQUFJLENBQUMsR0FBRywwQkFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQTlCLENBQUMsQ0FBOEIsQ0FBQTtRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLENBQUMsR0FBRyxxQkFBTyxJQUFJLEVBQVgsQ0FBQyxDQUFXLENBQUE7U0FDakI7UUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsQ0FBQyxHQUFHLHFCQUFPLEtBQUssRUFBWixDQUFDLENBQVksQ0FBQTtTQUNsQjtRQUNELHFDQUFPLENBQUMsRUFBUTtJQUNsQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMs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
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUErQix5QkFBeUIsQ0FBQTtBQUV4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV2RixNQUFNLFVBQVUsU0FBUyxDQUEyQixNQUFpQixFQUFFLE1BQTBDO0lBQy9HLE9BQU8sQ0FBQyxDQUFDLENBQVcsRUFBWSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUE7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTywwQkFBNkQsR0FBRyxFQUFFLENBQUMsdUJBQWEsRUFBaEYsMENBQUEsNkJBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFqQyxDQUFDLENBQWlDLENBQWdCLENBQStCLENBQUE7U0FDekY7UUFDRCxJQUFJLENBQUMsR0FBRywwQkFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQTlCLENBQUMsQ0FBOEIsQ0FBQTtRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLENBQUMsR0FBRyxxQkFBTyxJQUFJLEVBQVgsQ0FBQyxDQUFXLENBQUE7U0FDakI7UUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsQ0FBQyxHQUFHLHFCQUFPLEtBQUssRUFBWixDQUFDLENBQVksQ0FBQTtTQUNsQjtRQUNELHFDQUFPLENBQUMsRUFBUTtJQUNsQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "0.24.0",
3
+ "version": "0.24.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -22,8 +22,8 @@
22
22
  "redlock": "^4.2.0",
23
23
  "@effect-app/prelude": "0.20.3",
24
24
  "@effect-app/core": "0.21.3",
25
- "@effect-app/schema": "0.17.3",
26
- "@effect-app/infra-adapters": "0.19.3"
25
+ "@effect-app/infra-adapters": "0.19.3",
26
+ "@effect-app/schema": "0.17.3"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@babel/cli": "^7.20.7",