@effect-app/infra 0.182.0 → 0.182.2
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 +19 -0
- package/_cjs/api/defaultErrorHandler.cjs +2 -2
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/routing/base.cjs +8 -8
- package/_cjs/api/routing/base.cjs.map +1 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs +3 -3
- package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +5 -5
- package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +1 -1
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -6
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +1 -1
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +4 -4
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -3
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +2 -2
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +4 -4
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs +2 -2
- package/_cjs/services/Repository/dsl.cjs.map +1 -1
- package/_cjs/services/Repository/ext.cjs +14 -14
- package/_cjs/services/Repository/ext.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +26 -26
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +7 -7
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +6 -6
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +14 -12
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +15 -15
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +19 -19
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +23 -23
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +9 -9
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +14 -14
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +10 -10
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +11 -11
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +21 -21
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +5 -5
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/dist/api/defaultErrorHandler.js +7 -3
- package/dist/api/routing/base.js +15 -14
- package/dist/api/routing/defaultErrorHandler.js +10 -4
- package/dist/api/routing/makeRequestHandler.js +11 -6
- package/dist/errorReporter.js +2 -2
- package/dist/rateLimit.js +10 -7
- package/dist/services/Emailer/fake.js +3 -2
- package/dist/services/Operations/live.js +7 -6
- package/dist/services/Operations/service.js +10 -7
- package/dist/services/QueueMaker/errors.js +3 -3
- package/dist/services/QueueMaker/memQueue.js +11 -8
- package/dist/services/QueueMaker/sbqueue.js +5 -3
- package/dist/services/Repository/dsl.js +3 -3
- package/dist/services/Repository/ext.js +28 -15
- package/dist/services/RepositoryBase.js +46 -29
- package/dist/services/RequestContextContainer.js +12 -10
- package/dist/services/Store/ContextMapContainer.js +12 -9
- package/dist/services/Store/Cosmos.js +34 -21
- package/dist/services/Store/Disk.js +20 -16
- package/dist/services/Store/Memory.js +32 -25
- package/dist/services/Store/Redis.js +38 -27
- package/dist/services/simpledb/cosmosdb.js +20 -11
- package/dist/services/simpledb/diskdb.js +25 -19
- package/dist/services/simpledb/memdb.js +16 -12
- package/dist/services/simpledb/mongodb.js +19 -11
- package/dist/services/simpledb/redisdb.d.ts +3 -3
- package/dist/services/simpledb/redisdb.js +32 -20
- package/dist/services/simpledb/shared.d.ts +5 -5
- package/dist/services/simpledb/simpledb.js +14 -9
- package/package.json +4 -4
|
@@ -16,9 +16,12 @@ function makeDiskStoreInt(prefix, namespace, dir, name, seed, defaultValues) {
|
|
|
16
16
|
}
|
|
17
17
|
const file = dir + "/" + prefix + name + ".json";
|
|
18
18
|
const fsStore = {
|
|
19
|
-
get: tsplus_module_1.withSpan(tsplus_module_1.
|
|
20
|
-
.readTextFile(file), "Disk.read.readFile [effect-app/infra/Store]")
|
|
21
|
-
|
|
19
|
+
get: tsplus_module_1.withSpan(tsplus_module_1.withSpan(fu
|
|
20
|
+
.readTextFile(file), "Disk.read.readFile [effect-app/infra/Store]")
|
|
21
|
+
.flatMap((x) => tsplus_module_1.withSpan(tsplus_module_1.sync(() => JSON.parse(x)), "Disk.read.parse [effect-app/infra/Store]"))
|
|
22
|
+
.orDie, "Disk.read [effect-app/infra/Store]", { attributes: { "disk.file": file } }),
|
|
23
|
+
setRaw: (v) => tsplus_module_1.withSpan(tsplus_module_1.withSpan(tsplus_module_1.sync(() => JSON.stringify([...v], undefined, 2)), "Disk.stringify [effect-app/infra/Store]", { attributes: { "disk.file": file } })
|
|
24
|
+
.flatMap((json) => tsplus_module_1.withSpan(fu
|
|
22
25
|
.writeTextFile(file, json), "Disk.write.writeFile [effect-app/infra/Store]", {
|
|
23
26
|
attributes: { "disk.file_size": json.length }
|
|
24
27
|
})), "Disk.write [effect-app/infra/Store]", {
|
|
@@ -28,10 +31,10 @@ function makeDiskStoreInt(prefix, namespace, dir, name, seed, defaultValues) {
|
|
|
28
31
|
const store = yield* $(makeMemoryStoreInt(name, namespace, !fs.existsSync(file)
|
|
29
32
|
? seed
|
|
30
33
|
: fsStore.get, defaultValues));
|
|
31
|
-
yield* $(
|
|
34
|
+
yield* $(store.all.flatMap(fsStore.setRaw));
|
|
32
35
|
const sem = tsplus_module_1.unsafeMakeSemaphore(1);
|
|
33
36
|
const withPermit = sem.withPermits(1);
|
|
34
|
-
const flushToDisk =
|
|
37
|
+
const flushToDisk = store.all.flatMap(fsStore.setRaw).pipe(withPermit);
|
|
35
38
|
const flushToDiskInBackground = tsplus_module_1.forkDaemon(tsplus_module_1.uninterruptible(tsplus_module_1.tapErrorCause(flushToDisk, (err) => tsplus_module_1.sync(() => console.error(err)))));
|
|
36
39
|
return {
|
|
37
40
|
...store,
|
|
@@ -57,7 +60,7 @@ export function makeDiskStore({ prefix }, dir) {
|
|
|
57
60
|
const primary = yield* $(makeDiskStoreInt(prefix, "primary", dir, name, seed, config?.defaultValues));
|
|
58
61
|
const stores = new Map([["primary", primary]]);
|
|
59
62
|
const ctx = yield* $(tsplus_module_1.context());
|
|
60
|
-
const getStore = !config?.allowNamespace ? tsplus_module_1.succeed(primary) :
|
|
63
|
+
const getStore = !config?.allowNamespace ? tsplus_module_1.succeed(primary) : tsplus_module_3.get(storeId).flatMap((namespace) => {
|
|
61
64
|
const store = stores.get(namespace);
|
|
62
65
|
if (store) {
|
|
63
66
|
return tsplus_module_1.succeed(store);
|
|
@@ -69,19 +72,20 @@ export function makeDiskStore({ prefix }, dir) {
|
|
|
69
72
|
const existing = stores.get(namespace);
|
|
70
73
|
if (existing)
|
|
71
74
|
return tsplus_module_1.sync(() => existing);
|
|
72
|
-
return tsplus_module_1.provide(
|
|
75
|
+
return tsplus_module_1.provide(makeDiskStoreInt(prefix, namespace, dir, name, seed, config?.defaultValues)
|
|
76
|
+
.orDie, ctx)
|
|
73
77
|
.tap((store) => tsplus_module_1.sync(() => stores.set(namespace, store)));
|
|
74
78
|
}));
|
|
75
79
|
});
|
|
76
80
|
const s = {
|
|
77
|
-
all:
|
|
78
|
-
find: (...args) =>
|
|
79
|
-
filter: (...args) =>
|
|
80
|
-
filterJoinSelect: (...args) =>
|
|
81
|
-
set: (...args) =>
|
|
82
|
-
batchSet: (...args) =>
|
|
83
|
-
bulkSet: (...args) =>
|
|
84
|
-
remove: (...args) =>
|
|
81
|
+
all: getStore.flatMap((_) => _.all),
|
|
82
|
+
find: (...args) => getStore.flatMap((_) => _.find(...args)),
|
|
83
|
+
filter: (...args) => getStore.flatMap((_) => _.filter(...args)),
|
|
84
|
+
filterJoinSelect: (...args) => getStore.flatMap((_) => _.filterJoinSelect(...args)),
|
|
85
|
+
set: (...args) => getStore.flatMap((_) => _.set(...args)),
|
|
86
|
+
batchSet: (...args) => getStore.flatMap((_) => _.batchSet(...args)),
|
|
87
|
+
bulkSet: (...args) => getStore.flatMap((_) => _.bulkSet(...args)),
|
|
88
|
+
remove: (...args) => getStore.flatMap((_) => _.remove(...args))
|
|
85
89
|
};
|
|
86
90
|
return s;
|
|
87
91
|
})
|
|
@@ -91,4 +95,4 @@ export function makeDiskStore({ prefix }, dir) {
|
|
|
91
95
|
export function DiskStoreLayer(config, dir) {
|
|
92
96
|
return StoreMaker.toLayer(makeDiskStore(config, dir));
|
|
93
97
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvRGlzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFbkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLFNBQVMsZ0JBQWdCLENBQ3ZCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixHQUFXLEVBQ1gsSUFBWSxFQUNaLElBQWlDLEVBQ2pDLGFBQTJCO0lBRTNCLE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUE7WUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxPQUFPLENBQUE7UUFDaEQsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUseUJBQUEseUJBQUEsRUFBRTtpQkFDSixZQUFZLENBQUMsSUFBSSxDQUFDLEVBQ1QsNkNBQTZDLENBQUM7aUJBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMseUJBQUEscUJBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVMsQ0FBQyxFQUFVLDBDQUEw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
|
|
@@ -52,15 +52,17 @@ export function makeMemoryStoreInt(modelName, namespace, seed, _defaultValues) {
|
|
|
52
52
|
const store = tsplus_module_7.unsafeMake(items);
|
|
53
53
|
const sem = tsplus_module_4.unsafeMakeSemaphore(1);
|
|
54
54
|
const withPermit = sem.withPermits(1);
|
|
55
|
-
const values =
|
|
56
|
-
const all =
|
|
57
|
-
const batchSet = (items) =>
|
|
58
|
-
.forEachEffect((i) =>
|
|
59
|
-
.tap((items) =>
|
|
55
|
+
const values = tsplus_module_7.get(store).map((s) => s.values());
|
|
56
|
+
const all = values.map(tsplus_module_1.fromIterable);
|
|
57
|
+
const batchSet = (items) => items
|
|
58
|
+
.forEachEffect((i) => s.find(i.id).flatMap((current) => updateETag(i, current)))
|
|
59
|
+
.tap((items) => tsplus_module_7.get(store).map((m) => {
|
|
60
60
|
const mut = m;
|
|
61
61
|
items.forEach((e) => mut.set(e.id, e));
|
|
62
62
|
return mut;
|
|
63
|
-
})
|
|
63
|
+
})
|
|
64
|
+
.flatMap((_) => tsplus_module_7.set(store, _)))
|
|
65
|
+
.map((_) => _)
|
|
64
66
|
.pipe(withPermit);
|
|
65
67
|
const s = {
|
|
66
68
|
all: tsplus_module_4.withSpan(all, "Memory.all [effect-app/infra/Store]", {
|
|
@@ -69,24 +71,27 @@ export function makeMemoryStoreInt(modelName, namespace, seed, _defaultValues) {
|
|
|
69
71
|
namespace
|
|
70
72
|
}
|
|
71
73
|
}),
|
|
72
|
-
find: (id) => tsplus_module_4.withSpan(
|
|
74
|
+
find: (id) => tsplus_module_4.withSpan(tsplus_module_7.get(store).map((_) => tsplus_module_2.fromNullable(_.get(id))), "Memory.find [effect-app/infra/Store]", {
|
|
73
75
|
attributes: {
|
|
74
76
|
modelName,
|
|
75
77
|
namespace
|
|
76
78
|
}
|
|
77
79
|
}),
|
|
78
|
-
filter: (f) => tsplus_module_4.withSpan(
|
|
79
|
-
.tap(() => logQuery(f, defaultValues))
|
|
80
|
+
filter: (f) => tsplus_module_4.withSpan(all
|
|
81
|
+
.tap(() => logQuery(f, defaultValues))
|
|
82
|
+
.map(memFilter(f)), "Memory.filter [effect-app/infra/Store]", {
|
|
80
83
|
attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
|
|
81
84
|
}),
|
|
82
|
-
filterJoinSelect: (filter) => tsplus_module_4.withSpan(
|
|
85
|
+
filterJoinSelect: (filter) => tsplus_module_4.withSpan(all
|
|
86
|
+
.map((c) => c.flatMap(codeFilterJoinSelect(filter))), "Memory.filterJoinSelect [effect-app/infra/Store]", {
|
|
83
87
|
attributes: {
|
|
84
88
|
modelName
|
|
85
89
|
}
|
|
86
90
|
}),
|
|
87
|
-
set: (e) => tsplus_module_4.withSpan(
|
|
88
|
-
.find(e.id)
|
|
89
|
-
.
|
|
91
|
+
set: (e) => tsplus_module_4.withSpan(s
|
|
92
|
+
.find(e.id)
|
|
93
|
+
.flatMap((current) => updateETag(e, current))
|
|
94
|
+
.tap((e) => tsplus_module_7.get(store).map((_) => new Map([..._, [e.id, e]])).flatMap((_) => tsplus_module_7.set(store, _)))
|
|
90
95
|
.pipe(withPermit), "Memory.set [effect-app/infra/Store]", {
|
|
91
96
|
attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
|
|
92
97
|
}),
|
|
@@ -99,7 +104,8 @@ export function makeMemoryStoreInt(modelName, namespace, seed, _defaultValues) {
|
|
|
99
104
|
bulkSet: tsplus_module_8.flow(batchSet, (_) => tsplus_module_4.withSpan(_, "Memory.bulkSet [effect-app/infra/Store]", {
|
|
100
105
|
attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
|
|
101
106
|
})),
|
|
102
|
-
remove: (e) => tsplus_module_4.withSpan(
|
|
107
|
+
remove: (e) => tsplus_module_4.withSpan(tsplus_module_7.get(store).map((_) => new Map([..._].filter(([_]) => _ !== e.id)))
|
|
108
|
+
.flatMap((_) => tsplus_module_7.set(store, _))
|
|
103
109
|
.pipe(withPermit), "Memory.remove [effect-app/infra/Store]", {
|
|
104
110
|
attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
|
|
105
111
|
})
|
|
@@ -113,7 +119,7 @@ export const makeMemoryStore = () => ({
|
|
|
113
119
|
const primary = yield* $(makeMemoryStoreInt(modelName, "primary", seed, config?.defaultValues));
|
|
114
120
|
const ctx = yield* $(tsplus_module_4.context());
|
|
115
121
|
const stores = new Map([["primary", primary]]);
|
|
116
|
-
const getStore = !config?.allowNamespace ? tsplus_module_4.succeed(primary) :
|
|
122
|
+
const getStore = !config?.allowNamespace ? tsplus_module_4.succeed(primary) : tsplus_module_3.get(storeId).flatMap((namespace) => {
|
|
117
123
|
const store = stores.get(namespace);
|
|
118
124
|
if (store) {
|
|
119
125
|
return tsplus_module_4.succeed(store);
|
|
@@ -125,22 +131,23 @@ export const makeMemoryStore = () => ({
|
|
|
125
131
|
const store = stores.get(namespace);
|
|
126
132
|
if (store)
|
|
127
133
|
return tsplus_module_4.sync(() => store);
|
|
128
|
-
return tsplus_module_4.provide(
|
|
134
|
+
return tsplus_module_4.provide(makeMemoryStoreInt(modelName, namespace, seed, config?.defaultValues)
|
|
135
|
+
.orDie, ctx)
|
|
129
136
|
.tap((store) => tsplus_module_4.sync(() => stores.set(namespace, store)));
|
|
130
137
|
}));
|
|
131
138
|
});
|
|
132
139
|
const s = {
|
|
133
|
-
all:
|
|
134
|
-
find: (...args) =>
|
|
135
|
-
filter: (...args) =>
|
|
136
|
-
filterJoinSelect: (...args) =>
|
|
137
|
-
set: (...args) =>
|
|
138
|
-
batchSet: (...args) =>
|
|
139
|
-
bulkSet: (...args) =>
|
|
140
|
-
remove: (...args) =>
|
|
140
|
+
all: getStore.flatMap((_) => _.all),
|
|
141
|
+
find: (...args) => getStore.flatMap((_) => _.find(...args)),
|
|
142
|
+
filter: (...args) => getStore.flatMap((_) => _.filter(...args)),
|
|
143
|
+
filterJoinSelect: (...args) => getStore.flatMap((_) => _.filterJoinSelect(...args)),
|
|
144
|
+
set: (...args) => getStore.flatMap((_) => _.set(...args)),
|
|
145
|
+
batchSet: (...args) => getStore.flatMap((_) => _.batchSet(...args)),
|
|
146
|
+
bulkSet: (...args) => getStore.flatMap((_) => _.bulkSet(...args)),
|
|
147
|
+
remove: (...args) => getStore.flatMap((_) => _.remove(...args))
|
|
141
148
|
};
|
|
142
149
|
return s;
|
|
143
150
|
})
|
|
144
151
|
});
|
|
145
152
|
export const MemoryStoreLive = StoreMaker.toLayer(tsplus_module_4.sync(() => makeMemoryStore()));
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0UsTUFBTSxVQUFVLFNBQVMsQ0FBb0UsQ0FBbUI7SUFFOUcsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFPLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUE7UUFDeEYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQTtRQUNwQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUNYLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBb0IsQ0FBQyxTQUFTLENBQ3ZHLEdBQUcsRUFBRSxD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
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0UsTUFBTSxVQUFVLFNBQVMsQ0FBb0UsQ0FBbUI7SUFFOUcsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFPLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUE7UUFDeEYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQTtRQUNwQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUNYLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxzQkFBb0IsQ0FBQyxTQUFTLENBQ3ZHLEdBQUcsRUFBRSxD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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect/
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
1
|
+
import * as tsplus_module_1 from "effect/Option";
|
|
2
|
+
import * as tsplus_module_2 from "effect/Effect";
|
|
3
3
|
import * as tsplus_module_3 from "effect-app/_ext/misc";
|
|
4
4
|
import * as tsplus_module_4 from "effect/ReadonlyArray";
|
|
5
5
|
import * as tsplus_module_5 from "effect/Secret";
|
|
@@ -11,46 +11,57 @@ import { memFilter } from "./Memory.js";
|
|
|
11
11
|
import { StoreMaker } from "./service.js";
|
|
12
12
|
import { codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
|
|
13
13
|
function makeRedisStore({ prefix }) {
|
|
14
|
-
return
|
|
14
|
+
return tsplus_module_2.gen(function* ($) {
|
|
15
15
|
const redis = yield* $(RedisClient);
|
|
16
16
|
return {
|
|
17
|
-
make: (name, seed, _config) =>
|
|
17
|
+
make: (name, seed, _config) => tsplus_module_2.gen(function* ($) {
|
|
18
18
|
const updateETag = makeUpdateETag(name);
|
|
19
19
|
// Very naive implementation of course.
|
|
20
20
|
const key = `${prefix}${name}`;
|
|
21
|
-
const current = yield* $(
|
|
22
|
-
if (!
|
|
23
|
-
const m = yield* $(seed ??
|
|
24
|
-
yield* $(
|
|
25
|
-
.set(key, JSON.stringify({ data: [...m].map((e) => makeETag(e)) }))
|
|
21
|
+
const current = yield* $(redis.get(key).orDie);
|
|
22
|
+
if (!tsplus_module_1.isSome(current)) {
|
|
23
|
+
const m = yield* $(seed ?? tsplus_module_2.sync(() => []));
|
|
24
|
+
yield* $(redis
|
|
25
|
+
.set(key, JSON.stringify({ data: [...m].map((e) => makeETag(e)) }))
|
|
26
|
+
.orDie);
|
|
26
27
|
}
|
|
27
|
-
const get =
|
|
28
|
-
.get(key)
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
const get = redis
|
|
29
|
+
.get(key)
|
|
30
|
+
.flatMap((x) => tsplus_module_3.encaseMaybeInEffect_(x, () => new NotFoundError({ type: "data", id: "" })))
|
|
31
|
+
.orDie
|
|
32
|
+
.map((x) => JSON.parse(x))
|
|
33
|
+
.map((_) => _.data);
|
|
34
|
+
const set = (i) => redis.set(key, JSON.stringify({ data: [...i.values()] })).orDie;
|
|
35
|
+
const sem = tsplus_module_2.unsafeMakeSemaphore(1);
|
|
31
36
|
const withPermit = sem.withPermits(1);
|
|
32
|
-
const asMap =
|
|
33
|
-
const all =
|
|
34
|
-
const batchSet = (items) =>
|
|
35
|
-
.forEachEffect((e) =>
|
|
36
|
-
.tap((items) =>
|
|
37
|
+
const asMap = get.map((x) => new Map(x.map((x) => [x.id, x])));
|
|
38
|
+
const all = get.map(tsplus_module_4.fromIterable);
|
|
39
|
+
const batchSet = (items) => items
|
|
40
|
+
.forEachEffect((e) => s.find(e.id).flatMap((current) => updateETag(e, current)))
|
|
41
|
+
.tap((items) => asMap
|
|
42
|
+
.map((m) => {
|
|
37
43
|
const mut = m;
|
|
38
44
|
items.forEach((e) => mut.set(e.id, e));
|
|
39
45
|
return mut;
|
|
40
|
-
})
|
|
46
|
+
})
|
|
47
|
+
.flatMap(set))
|
|
48
|
+
.map((_) => _)
|
|
41
49
|
.pipe(withPermit);
|
|
42
50
|
const s = {
|
|
43
51
|
all,
|
|
44
|
-
filter: (f) =>
|
|
45
|
-
filterJoinSelect: (filter) =>
|
|
46
|
-
find: (id) =>
|
|
47
|
-
set: (e) =>
|
|
48
|
-
.find(e.id)
|
|
49
|
-
.
|
|
52
|
+
filter: (f) => all.map(memFilter(f)),
|
|
53
|
+
filterJoinSelect: (filter) => all.map((c) => c.flatMap(codeFilterJoinSelect(filter))),
|
|
54
|
+
find: (id) => asMap.map((_) => tsplus_module_1.fromNullable(_.get(id))),
|
|
55
|
+
set: (e) => s
|
|
56
|
+
.find(e.id)
|
|
57
|
+
.flatMap((current) => updateETag(e, current))
|
|
58
|
+
.tap((e) => asMap.map((_) => new Map([..._, [e.id, e]])).flatMap(set))
|
|
50
59
|
.pipe(withPermit),
|
|
51
60
|
batchSet,
|
|
52
61
|
bulkSet: batchSet,
|
|
53
|
-
remove: (e) =>
|
|
62
|
+
remove: (e) => asMap
|
|
63
|
+
.map((_) => new Map([..._].filter(([_]) => _ !== e.id)))
|
|
64
|
+
.flatMap(set)
|
|
54
65
|
.pipe(withPermit)
|
|
55
66
|
};
|
|
56
67
|
return s;
|
|
@@ -62,4 +73,4 @@ export function RedisStoreLayer(cfg) {
|
|
|
62
73
|
return tsplus_module_6.provide(StoreMaker
|
|
63
74
|
.toLayer(makeRedisStore(cfg)), RedisClientLayer(tsplus_module_5.value(cfg.url)));
|
|
64
75
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL1JlZGlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUzRSxTQUFTLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBaUI7SUFDL0MsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNuQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLElBQWlDLEVBQ2pDLE9BQXlCLEVBQ3pCLEVBQUUsQ0FDRixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3ZDLHVDQUF1QztnQkFDdkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUE7Z0JBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUM5QyxJQUFJLENBQUMsdUJBQUEsT0FBTyxDQUFTLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxD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
|
|
@@ -21,18 +21,22 @@ export function createContext() {
|
|
|
21
21
|
return (type, encode, decode,
|
|
22
22
|
// schemaVersion: string,
|
|
23
23
|
indexes) => {
|
|
24
|
-
return
|
|
24
|
+
return setup(type, indexes).map(() => ({
|
|
25
25
|
find: simpledb.find(find, decode, type),
|
|
26
26
|
findBy,
|
|
27
27
|
save: simpledb.storeDirectly(store, type)
|
|
28
28
|
}));
|
|
29
29
|
function find(id) {
|
|
30
|
-
return
|
|
31
|
-
.CosmosClient
|
|
30
|
+
return Cosmos
|
|
31
|
+
.CosmosClient
|
|
32
|
+
.flatMap(({ db }) => tsplus_module_2.tryPromise(() => db.container(type).item(id).read()))
|
|
33
|
+
.map((i) => tsplus_module_3.fromNullable(i.resource))
|
|
34
|
+
.map((_) => _.map(({ _etag, data }) => ({ version: _etag, data })));
|
|
32
35
|
}
|
|
33
36
|
function findBy(parameters) {
|
|
34
|
-
return
|
|
35
|
-
.CosmosClient
|
|
37
|
+
return Cosmos
|
|
38
|
+
.CosmosClient
|
|
39
|
+
.flatMap(({ db }) => tsplus_module_2.tryPromise(() => db
|
|
36
40
|
.container(type)
|
|
37
41
|
.items
|
|
38
42
|
.query({
|
|
@@ -50,7 +54,9 @@ WHERE (
|
|
|
50
54
|
value: parameters[p]
|
|
51
55
|
}))
|
|
52
56
|
})
|
|
53
|
-
.fetchAll()))
|
|
57
|
+
.fetchAll()))
|
|
58
|
+
.map((x) => tsplus_module_4.head(x.resources))
|
|
59
|
+
.map((_) => _.map((_) => _.id));
|
|
54
60
|
}
|
|
55
61
|
function store(record, currentVersion) {
|
|
56
62
|
return tsplus_module_2.gen(function* ($) {
|
|
@@ -58,13 +64,14 @@ WHERE (
|
|
|
58
64
|
const { db } = yield* $(Cosmos.CosmosClient);
|
|
59
65
|
const data = yield* $(encode(record));
|
|
60
66
|
yield* $(tsplus_module_3.match(currentVersion, {
|
|
61
|
-
onNone: () => tsplus_module_2.
|
|
67
|
+
onNone: () => tsplus_module_2.tryPromise(() => db.container(type).items.create({
|
|
62
68
|
id: record.id,
|
|
63
69
|
timestamp: new Date(),
|
|
64
70
|
data
|
|
65
71
|
}))
|
|
66
|
-
.asUnit
|
|
67
|
-
|
|
72
|
+
.asUnit
|
|
73
|
+
.orDie,
|
|
74
|
+
onSome: (currentVersion) => tsplus_module_2.tryPromise(() => db
|
|
68
75
|
.container(type)
|
|
69
76
|
.item(record.id)
|
|
70
77
|
.replace({
|
|
@@ -76,7 +83,9 @@ WHERE (
|
|
|
76
83
|
type: "IfMatch",
|
|
77
84
|
condition: currentVersion
|
|
78
85
|
}
|
|
79
|
-
}))
|
|
86
|
+
}))
|
|
87
|
+
.orDie
|
|
88
|
+
.flatMap((x) => {
|
|
80
89
|
if (x.statusCode === 412) {
|
|
81
90
|
return new OptimisticLockException(type, record.id);
|
|
82
91
|
}
|
|
@@ -91,4 +100,4 @@ WHERE (
|
|
|
91
100
|
}
|
|
92
101
|
};
|
|
93
102
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL2Nvc21vc2RiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSwwQ0FBMEMsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDckQsT0FBTyxLQUFLLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFHekMsTUFBTSxzQkFBdUIsU0FBUSxnQkFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFzQjtJQUNsRyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNwQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxjQUE4QixFQUFFLEVBQUUsQ0FDN0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDakMsMkJBQWtCLEdBQUcsRUFBRSxDQUNyQixFQUFFO0tBQ0MsVUFBVTtLQUNWLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7S0FDcEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3JDLENBQ0YsQ0FBQTtBQUNILHVEQUF1RDtBQUN2RCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxDQUNMLElBQVksRUFDWixNQUFpRCxFQUNqRCxNQUE4QztJQUM5Qyx5QkFBeUI7SUFDekIsT0FBdUIsRUFDdkIsRUFBRTtRQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "effect/
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
1
|
+
import * as tsplus_module_1 from "effect/Option";
|
|
2
|
+
import * as tsplus_module_2 from "effect/Effect";
|
|
3
3
|
import { flow, pipe } from "@effect-app/core/Function";
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import * as PLF from "proper-lockfile";
|
|
@@ -24,13 +24,18 @@ export function createContext() {
|
|
|
24
24
|
const version = currentVersion
|
|
25
25
|
.map((cv) => (parseInt(cv) + 1).toString())
|
|
26
26
|
.getOrElse(() => "1");
|
|
27
|
-
const getData = flow(encode, (_) =>
|
|
27
|
+
const getData = flow(encode, (_) => _.map((data) => pretty({ version, timestamp: new Date(), data })));
|
|
28
28
|
const idx = makeIndexKey(record);
|
|
29
|
-
return
|
|
30
|
-
?
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
return tsplus_module_1.isSome(currentVersion)
|
|
30
|
+
? tsplus_module_2.scoped(tsplus_module_2.zipRight(lockIndex(record), readIndex(idx)
|
|
31
|
+
.flatMap((x) => x[record.id]
|
|
32
|
+
? tsplus_module_2.fail(() => new Error("Combination already exists, abort"))
|
|
33
|
+
: tsplus_module_2.zipRight(getData(record)
|
|
34
|
+
.flatMap((serialised) => fu.writeTextFile(getFilename(type, record.id), serialised)), writeIndex(idx, { ...x, [idx.key]: record.id })))
|
|
35
|
+
.orDie)).map(() => ({ version, data: record }))
|
|
36
|
+
: getData(record)
|
|
37
|
+
.flatMap((serialised) => fu.writeTextFile(getFilename(type, record.id), serialised))
|
|
38
|
+
.map(() => ({ version, data: record }));
|
|
34
39
|
}
|
|
35
40
|
function lockIndex(record) {
|
|
36
41
|
const index = makeIndexKey(record);
|
|
@@ -45,38 +50,39 @@ export function createContext() {
|
|
|
45
50
|
return lockIndexOnDisk(type)(lockKey);
|
|
46
51
|
}
|
|
47
52
|
function lockRecordOnDisk(type) {
|
|
48
|
-
return (id) =>
|
|
53
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getFilename(type, id)), {
|
|
49
54
|
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
50
55
|
onSuccess: (release) => ({ release })
|
|
51
56
|
}), (l) => l.release);
|
|
52
57
|
}
|
|
53
58
|
function lockIndexOnDisk(type) {
|
|
54
|
-
return (id) =>
|
|
59
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)), {
|
|
55
60
|
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
56
61
|
onSuccess: (release) => ({ release })
|
|
57
62
|
}), (l) => l.release);
|
|
58
63
|
}
|
|
59
64
|
function readFile(filePath) {
|
|
60
|
-
return
|
|
61
|
-
.readTextFile(filePath), (err) =>
|
|
65
|
+
return tsplus_module_2.catchAll(fu
|
|
66
|
+
.readTextFile(filePath), (err) => tsplus_module_2.die(new ConnectionException(err)));
|
|
62
67
|
}
|
|
63
68
|
function find(type) {
|
|
64
69
|
return (id) => {
|
|
65
|
-
return
|
|
70
|
+
return tryRead(getFilename(type, id)).map((_) => _.map((s) => JSON.parse(s)));
|
|
66
71
|
};
|
|
67
72
|
}
|
|
68
73
|
function getIdx(index) {
|
|
69
|
-
return
|
|
74
|
+
return readIndex(index).map((idx) => tsplus_module_1.fromNullable(idx[index.key]));
|
|
70
75
|
}
|
|
71
76
|
function readIndex(index) {
|
|
72
|
-
return
|
|
77
|
+
return tryRead(getIdxName(type, index.doc)).map((_) => tsplus_module_1.match(_, { onNone: () => ({}), onSome: (x) => JSON.parse(x) }));
|
|
73
78
|
}
|
|
74
79
|
function writeIndex(index, content) {
|
|
75
80
|
return pipe(JSON.stringify(content), (serialised) => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
76
81
|
}
|
|
77
82
|
function tryRead(filePath) {
|
|
78
|
-
return
|
|
79
|
-
.fileExists(filePath)
|
|
83
|
+
return fu
|
|
84
|
+
.fileExists(filePath)
|
|
85
|
+
.flatMap((exists) => !exists ? tsplus_module_2.sync(() => tsplus_module_1.none()) : readFile(filePath).map(tsplus_module_1.some));
|
|
80
86
|
}
|
|
81
87
|
function getFilename(type, id) {
|
|
82
88
|
return `${dir}/v${schemaVersion}.${getRecordName(type, id)}.json`;
|
|
@@ -87,7 +93,7 @@ export function createContext() {
|
|
|
87
93
|
};
|
|
88
94
|
}
|
|
89
95
|
function lockFile(fileName) {
|
|
90
|
-
return
|
|
96
|
+
return tsplus_module_2.tryPromise(() => PLF.lock(fileName).then(flow(tsplus_module_2.tryPromise, (_) => _.orDie)));
|
|
91
97
|
}
|
|
92
98
|
// TODO: ugh.
|
|
93
99
|
let initialised = false;
|
|
@@ -100,4 +106,4 @@ export function initialise(dir) {
|
|
|
100
106
|
}
|
|
101
107
|
initialised = true;
|
|
102
108
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlza2RiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9zaW1wbGVkYi9kaXNrZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLEtBQUssR0FBRyxNQUFNLGlCQUFpQixDQUFBO0FBRXRDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQyxPQUFPLEtBQUssRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw2QkFBNkIsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdHLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBR3pDLE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FDTCxJQUFZLEVBQ1osTUFBaUQsRUFDakQsTUFBOEMsRUFDOUMsYUFBcUIsRUFDckIsWUFBNkIsRUFDN0IsR0FBRyxHQUFHLFdBQVcsRUFDakIsRUFBRTtRQUNGLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNmLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQTtRQUNoQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFD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
|