@effect-app/infra 0.21.7 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/_cjs/_ext/Array.cjs +3 -2
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/codec.cjs +1 -1
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +18 -17
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +4 -4
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +2 -2
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +40 -40
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +15 -15
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +2 -2
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +49 -49
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -2
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -6
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +4 -4
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -1
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +4 -4
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +8 -7
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +5 -4
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +8 -8
- 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 +3 -3
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +11 -10
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +5 -5
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +21 -21
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +38 -38
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +10 -9
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +12 -12
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +15 -14
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +4 -4
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +18 -18
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +17 -17
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +8 -8
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +14 -14
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +19 -19
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +9 -9
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/dist/_ext/Array.js +4 -3
- package/dist/api/codec.js +2 -2
- package/dist/api/defaultErrorHandler.js +18 -18
- package/dist/api/express/makeJsonSchema.js +5 -5
- package/dist/api/express/makeOpenApiSpecs.js +2 -2
- package/dist/api/express/schema/requestHandler.js +36 -36
- package/dist/api/express/schema/routing.js +16 -16
- package/dist/api/reportError.js +4 -4
- package/dist/api/routing.js +58 -58
- package/dist/api/setupRequest.js +3 -3
- package/dist/api/writeDocs.js +7 -7
- package/dist/errorReporter.js +3 -3
- package/dist/instrument.js +2 -2
- package/dist/rateLimit.js +5 -5
- package/dist/services/Emailer/Sendgrid.js +9 -8
- package/dist/services/Emailer/fake.js +6 -5
- package/dist/services/Operations/live.js +9 -9
- package/dist/services/Operations/service.js +4 -4
- package/dist/services/QueueMaker/errors.js +4 -4
- package/dist/services/QueueMaker/memQueue.js +10 -10
- package/dist/services/QueueMaker/sbqueue.js +5 -5
- package/dist/services/Repository.js +15 -15
- package/dist/services/Store/Cosmos.js +40 -40
- package/dist/services/Store/Disk.js +12 -11
- package/dist/services/Store/Memory.js +14 -14
- package/dist/services/Store/Redis.js +16 -15
- package/dist/services/Store/index.js +5 -5
- package/dist/services/simpledb/cosmosdb.js +18 -18
- package/dist/services/simpledb/diskdb.js +14 -14
- package/dist/services/simpledb/memdb.js +9 -9
- package/dist/services/simpledb/mongodb.js +13 -13
- package/dist/services/simpledb/redisdb.js +16 -16
- package/dist/services/simpledb/simpledb.js +12 -12
- package/package.json +11 -11
|
@@ -7,6 +7,7 @@ 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
11
|
var fu = _interopRequireWildcard(require("@effect-app/infra-adapters/fileUtil"));
|
|
11
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
12
13
|
var _Memory = require("./Memory.cjs");
|
|
@@ -32,23 +33,23 @@ function makeDiskStore({
|
|
|
32
33
|
make: (name, existing, _config) => tsplus_module_1.gen(function* ($) {
|
|
33
34
|
const file = dir + "/" + prefix + name + ".json";
|
|
34
35
|
const fsStore = {
|
|
35
|
-
get: tsplus_module_1.orDie(tsplus_module_1.map(
|
|
36
|
+
get: tsplus_module_1.orDie(tsplus_module_1.map(x => JSON.parse(x))(fu.readTextFile(file))),
|
|
36
37
|
setRaw: v => JSON.stringify([...v], undefined, 2)["|>"](json => fu.writeTextFile(file, json))
|
|
37
38
|
};
|
|
38
39
|
const {
|
|
39
40
|
make
|
|
40
41
|
} = (0, _Memory.makeMemoryStore)();
|
|
41
|
-
const store = yield* $(make(name, !_fs.default.existsSync(file) ? existing ?? tsplus_module_1.sync(() => new Map()) : tsplus_module_1.map(
|
|
42
|
-
yield* $(tsplus_module_1.flatMap(
|
|
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));
|
|
43
44
|
const sem = tsplus_module_1.unsafeMakeSemaphore(1);
|
|
44
45
|
const withPermit = sem.withPermits(1);
|
|
45
|
-
const flushToDisk = withPermit(tsplus_module_1.flatMap(
|
|
46
|
+
const flushToDisk = withPermit(tsplus_module_1.flatMap(fsStore.setRaw)(store.all));
|
|
46
47
|
const s = {
|
|
47
48
|
...store,
|
|
48
|
-
batchSet: tsplus_module_2.flow(store.batchSet, t => tsplus_module_1.tap(
|
|
49
|
-
bulkSet: tsplus_module_2.flow(store.bulkSet, t => tsplus_module_1.tap(
|
|
50
|
-
set: tsplus_module_2.flow(store.set, t => tsplus_module_1.tap(
|
|
51
|
-
remove: tsplus_module_2.flow(store.remove, t => tsplus_module_1.tap(
|
|
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))
|
|
52
53
|
};
|
|
53
54
|
return s;
|
|
54
55
|
})
|
|
@@ -56,6 +57,6 @@ function makeDiskStore({
|
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
59
|
function DiskStoreLive(config) {
|
|
59
|
-
return
|
|
60
|
+
return tsplus_module_3.toLayer(tsplus_module_1.flatMap(makeDiskStore)(tsplus_module_1.config(config)), _service.StoreMaker);
|
|
60
61
|
}
|
|
61
62
|
//# sourceMappingURL=Disk.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Disk.cjs","mappings":"
|
|
1
|
+
{"version":3,"file":"Disk.cjs","mappings":";;;;;;;;;;AACA;AAEA;AAEA;AAEA;AAAyC;AAAA;AAAA;AAPzC;;AASA;;;;AAIM,SAAUA,aAAa,CAAC;EAAEC;AAAM,CAAiB;EACrD,OAAOC,qBAAY,MAAK;IACtB,MAAMC,GAAG,GAAG,SAAS;IACrB,IAAI,CAACC,WAAE,CAACC,UAAU,CAACF,GAAG,CAAC,EAAE;MACvBC,WAAE,CAACE,SAAS,CAACH,GAAG,CAAC;;IAEnB,OAAO;MACLI,IAAI,EAAE,CACJC,IAAY,EACZC,QAAoD,EACpDC,OAAwB,KAExBR,oBAAW,WAAUS,CAAC;QACpB,MAAMC,IAAI,GAAGT,GAAG,GAAG,GAAG,GAAGF,MAAM,GAAGO,IAAI,GAAG,OAAO;QAChD,MAAMK,OAAO,GAAG;UACdC,GAAG,wBAAEZ,oBAEEa,CAAC,IAAIC,IAAI,CAACC,KAAK,CAACF,CAAC,CAAQ,EAF3BG,EAAE,CACJC,YAAY,CAACP,IAAI,CAAC,CACY,CACzB;UACRQ,MAAM,EAAGC,CAAc,IAAKL,IAAI,CAACM,SAAS,CAAC,CAAC,GAAGD,CAAC,CAAC,EAAEE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAACC,IAAI,IAAIN,EAAE,CAACO,aAAa,CAACb,IAAI,EAAEY,IAAI,CAAC;SAC5G;QAED,MAAM;UAAEjB;QAAI,CAAE,GAAG,2BAAe,GAAE;QAElC,MAAMmB,KAAK,GAAG,OAAOf,CAAC,CACpBJ,IAAI,CACFC,IAAI,EACJ,CAACJ,WAAE,CAACC,UAAU,CAACO,IAAI,CAAC,GAChBH,QAAQ,IAAIP,2BAAO,IAAIyB,GAAG,EAAE,CAAC,GAC7BzB,oBAAgBa,CAAC,IAAI,IAAIY,GAAG,CAACZ,CAAC,CAACa,GAAG,CAACb,CAAC,IAAI,CAACA,CAAC,CAACc,EAAE,EAAEd,CAAC,CAAU,CAAC,CAAC,EAA5DF,OAAO,CAACC,GAAG,CAAkD,CAClE,CACF;QAED,OAAOH,CAAC,CAACT,wBAAkBW,OAAO,CAACO,MAAM,EAAhCM,KAAK,CAACI,GAAG,CAAwB,CAAC;QAE3C,MAAMC,GAAG,GAAG7B,oCAAqB,CAAC,CAAC;QACnC,MAAM8B,UAAU,GAAGD,GAAG,CAACE,WAAW,CAAC,CAAC,CAAC;QACrC,MAAMC,WAAW,GAA2CF,UAAU,CAAlD9B,wBAAkBW,OAAO,CAACO,MAAM,EAAhCM,KAAK,CAACI,GAAG,CAAwB,CAAkB;QACvE,MAAMK,CAAC,GAAiB;UACtB,GAAGT,KAAK;UACRU,QAAQ,EAAEC,oBAAI,CAACX,KAAK,CAACU,QAAQ,EAAEE,CAAC,IAC9BpC,oBAAM,MAAKA,2BAACA,8BAA0BqC,GAAG,IAAIrC,2BAAOsC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC,CAAC,EAA3DL,WAAW,CAAiD,CAAW,EAAnFI,CAAC,CAAmF,CAAC;UACvFI,OAAO,EAAEL,oBAAI,CAACX,KAAK,CAACgB,OAAO,EAAEJ,CAAC,IAC5BpC,oBAAM,MAAKA,2BACTA,8BAA0BqC,GAAG,IAC3BrC,2BAAOsC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC,CAAC,EAD5BL,WAAW,CAEV,CAAW,EAHdI,CAAC,CAIA,CAAC;UACJK,GAAG,EAAEN,oBAAI,CAACX,KAAK,CAACiB,GAAG,EAAEL,CAAC,IACpBpC,oBAAM,MAAKA,2BAACA,8BAA0BqC,GAAG,IAAIrC,2BAAOsC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC,CAAC,EAA3DL,WAAW,CAAiD,CAAW,EAAnFI,CAAC,CAAmF,CAAC;UACvFM,MAAM,EAAEP,oBAAI,CAACX,KAAK,CAACkB,MAAM,EAAEN,CAAC,IAC1BpC,oBAAM,MAAKA,2BACTA,8BAA0BqC,GAAG,IAC3BrC,2BAAOsC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC,CAAC,EAD5BL,WAAW,CAEV,CAAW,EAHdI,CAAC,CAIA;SACJ;QACD,OAAOH,CAAC;MACV,CAAC;KACJ;EACH,CAAC,CAAC;AACJ;AAEM,SAAUU,aAAa,CAACC,MAA6B;EACzD,OAAOC,gDACI/C,aAAa,yBADjB8C,MAAM,EACY,EACdE,mBAAU,CAAC;AACxB","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]}
|
|
@@ -24,12 +24,12 @@ function memFilter(filter, cursor) {
|
|
|
24
24
|
if (!skip && limit === 1) {
|
|
25
25
|
return tsplus_module_3.getOrElse(() => tsplus_module_1.empty())(tsplus_module_3.map(tsplus_module_1.make)(tsplus_module_2.findFirstMap((0, _utils.codeFilter)(filter))(c)));
|
|
26
26
|
}
|
|
27
|
-
let r = tsplus_module_1.filterMap(
|
|
27
|
+
let r = tsplus_module_1.filterMap((0, _utils.codeFilter)(filter))(c);
|
|
28
28
|
if (skip) {
|
|
29
|
-
r = tsplus_module_1.drop(
|
|
29
|
+
r = tsplus_module_1.drop(skip)(r);
|
|
30
30
|
}
|
|
31
31
|
if (limit !== undefined) {
|
|
32
|
-
r = tsplus_module_1.take(
|
|
32
|
+
r = tsplus_module_1.take(limit)(r);
|
|
33
33
|
}
|
|
34
34
|
return tsplus_module_4.ext_itToChunk(r);
|
|
35
35
|
};
|
|
@@ -41,22 +41,22 @@ const makeMemoryStore = () => ({
|
|
|
41
41
|
const store = yield* $(tsplus_module_6.make(new Map([...items.entries()].map(([id, e]) => [id, (0, _utils.makeETag)(e)]))));
|
|
42
42
|
const sem = tsplus_module_5.unsafeMakeSemaphore(1);
|
|
43
43
|
const withPermit = sem.withPermits(1);
|
|
44
|
-
const values = tsplus_module_5.map(
|
|
45
|
-
const all = tsplus_module_5.map(
|
|
46
|
-
const batchSet = items => withPermit(tsplus_module_5.map(tsplus_module_5.tap(
|
|
44
|
+
const values = tsplus_module_5.map(s => s.values())(tsplus_module_6.get(store));
|
|
45
|
+
const all = tsplus_module_5.map(tsplus_module_1.fromIterable)(values);
|
|
46
|
+
const batchSet = items => withPermit(tsplus_module_5.map(_ => _.toReadonlyArray())(tsplus_module_5.tap(items => tsplus_module_5.flatMap(_ => tsplus_module_6.set(_)(store))(tsplus_module_5.map(m => {
|
|
47
47
|
const mut = m;
|
|
48
48
|
items.forEach(e => mut.set(e.id, e));
|
|
49
49
|
return mut;
|
|
50
|
-
})
|
|
50
|
+
})(tsplus_module_6.get(store))))(tsplus_module_7.ext_forEach(items, i => tsplus_module_5.flatMap(current => updateETag(i, current))(s.find(i.id))))));
|
|
51
51
|
const s = {
|
|
52
52
|
all,
|
|
53
|
-
find: id => tsplus_module_5.map(
|
|
54
|
-
filter: (filter, cursor) => tsplus_module_5.map(
|
|
55
|
-
filterJoinSelect: filter => tsplus_module_5.map(
|
|
56
|
-
set: e => withPermit(tsplus_module_5.tap(tsplus_module_5.flatMap(
|
|
53
|
+
find: id => tsplus_module_5.map(_ => tsplus_module_3.fromNullable(_.get(id)))(tsplus_module_6.get(store)),
|
|
54
|
+
filter: (filter, cursor) => tsplus_module_5.map(memFilter(filter, cursor))(all),
|
|
55
|
+
filterJoinSelect: filter => tsplus_module_5.map(c => c.flatMap((0, _utils.codeFilterJoinSelect)(filter)))(all),
|
|
56
|
+
set: e => withPermit(tsplus_module_5.tap(e => tsplus_module_5.flatMap(_ => tsplus_module_6.set(_)(store))(tsplus_module_5.map(_ => new Map([..._, [e.id, e]]))(tsplus_module_6.get(store))))(tsplus_module_5.flatMap(current => updateETag(e, current))(s.find(e.id)))),
|
|
57
57
|
batchSet,
|
|
58
58
|
bulkSet: batchSet,
|
|
59
|
-
remove: e => withPermit(tsplus_module_5.flatMap(
|
|
59
|
+
remove: e => withPermit(tsplus_module_5.flatMap(_ => tsplus_module_6.set(_)(store))(tsplus_module_5.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(tsplus_module_6.get(store))))
|
|
60
60
|
};
|
|
61
61
|
return s;
|
|
62
62
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Memory.cjs","mappings":";;;;;;;;;;;;;;;AAGA;AACA;AAAuF;AAAA;AAEjF,SAAUA,SAAS,CAA2BC,MAAiB,EAAEC,MAA0C;EAC/G,OAASC,CAAW,IAAc;IAChC,MAAMC,IAAI,GAAGF,MAAM,EAAEE,IAAI;IACzB,MAAMC,KAAK,GAAGH,MAAM,EAAEG,KAAK;IAC3B,IAAI,CAACD,IAAI,IAAIC,KAAK,KAAK,CAAC,EAAE;MACxB,OAAOC,0BAA6D,MAAMC,uBAAa,EAAhFD,uEAAe,qBAAU,EAACL,MAAM,CAAC,EAAjCE,CAAC,CAAiC,CAAgB,CAA+B;;IAE1F,IAAIK,CAAC,GAAGD,
|
|
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","makeMemoryStore","make","name","existing","_config","tsplus_module_5","$","updateETag","items","Map","store","tsplus_module_6","entries","map","id","e","sem","withPermit","withPermits","values","s","all","batchSet","_","toReadonlyArray","m","mut","forEach","set","tsplus_module_7","i","current","find","get","filterJoinSelect","flatMap","bulkSet","remove","MemoryStoreLive","tsplus_module_8"],"sourceRoot":"","sources":["../../../_src/services/Store/Memory.ts"],"sourcesContent":[null]}
|
|
@@ -10,6 +10,7 @@ var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/core/Option"));
|
|
|
10
10
|
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/prelude/_ext/misc"));
|
|
11
11
|
var tsplus_module_4 = _interopRequireWildcard(require("@effect/data/Chunk"));
|
|
12
12
|
var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/core/_ext/Iterable"));
|
|
13
|
+
var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
13
14
|
var RedisClient = _interopRequireWildcard(require("@effect-app/infra-adapters/redis-client"));
|
|
14
15
|
var _errors = require("../../errors.cjs");
|
|
15
16
|
var _Memory = require("./Memory.cjs");
|
|
@@ -29,35 +30,35 @@ function makeRedisStore({
|
|
|
29
30
|
const updateETag = (0, _utils.makeUpdateETag)(name);
|
|
30
31
|
// Very naive implementation of course.
|
|
31
32
|
const key = `${prefix}${name}`;
|
|
32
|
-
const current = yield* $(tsplus_module_1.provideService(tsplus_module_1.orDie(RedisClient.get(key))
|
|
33
|
+
const current = yield* $(tsplus_module_1.provideService(RedisClient.RedisClient, redis)(tsplus_module_1.orDie(RedisClient.get(key))));
|
|
33
34
|
if (!tsplus_module_2.isSome(current)) {
|
|
34
35
|
const m = yield* $(existing ?? tsplus_module_1.sync(() => new Map()));
|
|
35
|
-
yield* $(tsplus_module_1.provideService(tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({
|
|
36
|
+
yield* $(tsplus_module_1.provideService(RedisClient.RedisClient, redis)(tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({
|
|
36
37
|
data: [...m.values()].map(e => (0, _utils.makeETag)(e))
|
|
37
|
-
})))
|
|
38
|
+
})))));
|
|
38
39
|
}
|
|
39
|
-
const get = tsplus_module_1.provideService(tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(
|
|
40
|
+
const get = tsplus_module_1.provideService(RedisClient.RedisClient, redis)(tsplus_module_1.map(_ => _.data)(tsplus_module_1.map(x => JSON.parse(x))(tsplus_module_1.orDie(tsplus_module_1.flatMap(x => tsplus_module_3.encaseMaybeInEffect_(x, () => new _errors.NotFoundError("data", "")))(RedisClient.get(key))))));
|
|
40
41
|
const set = i => tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({
|
|
41
42
|
data: [...i.values()]
|
|
42
43
|
})));
|
|
43
44
|
const sem = tsplus_module_1.unsafeMakeSemaphore(1);
|
|
44
45
|
const withPermit = sem.withPermits(1);
|
|
45
|
-
const asMap = tsplus_module_1.map(
|
|
46
|
-
const all = tsplus_module_1.map(
|
|
47
|
-
const batchSet = items => tsplus_module_1.provideService(withPermit(tsplus_module_1.map(
|
|
46
|
+
const asMap = tsplus_module_1.map(x => new Map(x.map(x => [x.id, x])))(get);
|
|
47
|
+
const all = tsplus_module_1.map(tsplus_module_4.fromIterable)(get);
|
|
48
|
+
const batchSet = items => tsplus_module_1.provideService(RedisClient.RedisClient, redis)(withPermit(tsplus_module_1.map(_ => _.toReadonlyArray())(tsplus_module_1.tap(items => tsplus_module_1.flatMap(set)(tsplus_module_1.map(m => {
|
|
48
49
|
const mut = m;
|
|
49
50
|
items.forEach(e => mut.set(e.id, e));
|
|
50
51
|
return mut;
|
|
51
|
-
})
|
|
52
|
+
})(asMap)))(tsplus_module_5.ext_forEach(items, e => tsplus_module_1.flatMap(current => updateETag(e, current))(s.find(e.id)))))));
|
|
52
53
|
const s = {
|
|
53
54
|
all,
|
|
54
|
-
filter: (filter, cursor) => tsplus_module_1.map(
|
|
55
|
-
filterJoinSelect: filter => tsplus_module_1.map(
|
|
56
|
-
find: id => tsplus_module_1.map(
|
|
57
|
-
set: e => tsplus_module_1.provideService(withPermit(tsplus_module_1.tap(
|
|
55
|
+
filter: (filter, cursor) => tsplus_module_1.map((0, _Memory.memFilter)(filter, cursor))(all),
|
|
56
|
+
filterJoinSelect: filter => tsplus_module_1.map(c => c.flatMap((0, _utils.codeFilterJoinSelect)(filter)))(all),
|
|
57
|
+
find: id => tsplus_module_1.map(_ => tsplus_module_2.fromNullable(_.get(id)))(asMap),
|
|
58
|
+
set: e => tsplus_module_1.provideService(RedisClient.RedisClient, redis)(withPermit(tsplus_module_1.tap(e => tsplus_module_1.flatMap(set)(tsplus_module_1.map(_ => new Map([..._, [e.id, e]]))(asMap)))(tsplus_module_1.flatMap(current => updateETag(e, current))(s.find(e.id))))),
|
|
58
59
|
batchSet,
|
|
59
60
|
bulkSet: batchSet,
|
|
60
|
-
remove: e => tsplus_module_1.provideService(withPermit(tsplus_module_1.flatMap(tsplus_module_1.map(
|
|
61
|
+
remove: e => tsplus_module_1.provideService(RedisClient.RedisClient, redis)(withPermit(tsplus_module_1.flatMap(set)(tsplus_module_1.map(_ => new Map([..._].filter(([_]) => _ !== e.id)))(asMap))))
|
|
61
62
|
};
|
|
62
63
|
return s;
|
|
63
64
|
})
|
|
@@ -65,6 +66,6 @@ function makeRedisStore({
|
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
function RedisStoreLive(config) {
|
|
68
|
-
return
|
|
69
|
+
return tsplus_module_6.toLayer(tsplus_module_1.flatMap(makeRedisStore)(tsplus_module_1.config(config)), _service.StoreMaker);
|
|
69
70
|
}
|
|
70
71
|
//# sourceMappingURL=Redis.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Redis.cjs","mappings":"
|
|
1
|
+
{"version":3,"file":"Redis.cjs","mappings":"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","names":["makeRedisStore","prefix","tsplus_module_1","$","redis","RedisClient","make","name","existing","_config","updateETag","key","current","get","tsplus_module_2","m","Map","set","JSON","stringify","data","values","map","e","_","x","parse","tsplus_module_3","NotFoundError","i","sem","withPermit","withPermits","asMap","id","all","batchSet","items","toReadonlyArray","mut","forEach","tsplus_module_5","s","find","filter","cursor","filterJoinSelect","c","flatMap","bulkSet","remove","RedisStoreLive","config","tsplus_module_6","StoreMaker"],"sourceRoot":"","sources":["../../../_src/services/Store/Redis.ts"],"sourcesContent":[null]}
|
|
@@ -37,7 +37,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
37
37
|
* @tsplus static StoreMaker.Ops Live
|
|
38
38
|
*/
|
|
39
39
|
function StoreMakerLive(config) {
|
|
40
|
-
return tsplus_module_3.toScopedLayer(tsplus_module_2.flatMap(
|
|
40
|
+
return tsplus_module_3.toScopedLayer(tsplus_module_2.flatMap(cfg => {
|
|
41
41
|
const storageUrl = tsplus_module_1.value(cfg.url);
|
|
42
42
|
if (storageUrl.startsWith("mem://")) {
|
|
43
43
|
console.log("Using in memory store");
|
|
@@ -49,11 +49,11 @@ function StoreMakerLive(config) {
|
|
|
49
49
|
}
|
|
50
50
|
if (storageUrl.startsWith("redis://")) {
|
|
51
51
|
console.log("Using Redis store");
|
|
52
|
-
return tsplus_module_2.flatMap(
|
|
52
|
+
return tsplus_module_2.flatMap(client => tsplus_module_2.provideService(RedisClient.RedisClient, client)((0, _Redis.makeRedisStore)(cfg)))(RedisClient.makeRedisClient(makeRedis(storageUrl)));
|
|
53
53
|
}
|
|
54
54
|
console.log("Using Cosmos DB store");
|
|
55
|
-
return tsplus_module_2.flatMap(
|
|
56
|
-
}), _service.StoreMaker);
|
|
55
|
+
return tsplus_module_2.flatMap(client => tsplus_module_2.provideService(CosmosClient.CosmosClient, client)((0, _Cosmos.makeCosmosStore)(cfg)))(CosmosClient.makeCosmosClient(storageUrl, cfg.dbName));
|
|
56
|
+
})(tsplus_module_2.config(config)), _service.StoreMaker);
|
|
57
57
|
}
|
|
58
58
|
function makeRedis(storageUrl) {
|
|
59
59
|
const url = new URL(storageUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","mappings":";;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAmDA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAA4B;AAAA;AA7D5B;;AAYA;;;AAGM,SAAUA,cAAc,CAACC,MAA6B;EAC1D,OAAOC,
|
|
1
|
+
{"version":3,"file":"index.cjs","mappings":";;;;;;;;;;;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAmDA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAA4B;AAAA;AA7D5B;;AAYA;;;AAGM,SAAUA,cAAc,CAACC,MAA6B;EAC1D,OAAOC,sDAAsBC,GAAG,IAAG;IACjC,MAAMC,UAAU,yBAAGD,GAAG,CAACE,GAAG,CAAM;IAChC,IAAID,UAAU,CAACE,UAAU,CAAC,QAAQ,CAAC,EAAE;MACnCC,OAAO,CAACC,GAAG,CAAC,uBAAuB,CAAC;MACpC,OAAOC,2BAAO,2BAAe,GAAE,CAAC;;IAElC,IAAIL,UAAU,CAACE,UAAU,CAAC,SAAS,CAAC,EAAE;MACpCC,OAAO,CAACC,GAAG,CAAC,6BAA6B,CAAC;MAC1C,OAAO,uBAAa,EAACL,GAAG,CAAC;;IAE3B,IAAIC,UAAU,CAACE,UAAU,CAAC,UAAU,CAAC,EAAE;MACrCC,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;MAChC,OAAOC,wBAA2DC,MAAM,IACtED,+BACEE,WAAW,CAACA,WAAW,EACvBD,MAAM,EAFR,yBAAc,EAACP,GAAG,CAAC,CAGlB,EAJIQ,WAAW,CAACC,eAAe,CAACC,SAAS,CAACT,UAAU,CAAC,CAAC,CAKxD;;IAGHG,OAAO,CAACC,GAAG,CAAC,uBAAuB,CAAC;IACpC,OAAOC,wBAA8DC,MAAM,IACzED,+BAAoCK,YAAY,CAACA,YAAY,EAAEJ,MAAM,EAArE,2BAAe,EAACP,GAAG,CAAC,CAAkD,EADjEW,YAAY,CAACC,gBAAgB,CAACX,UAAU,EAAED,GAAG,CAACa,MAAM,CAAC,CAE3D;EACH,CAAC,yBAxBMf,MAAM,EAwBX,EACegB,mBAAU,CAAC;AAC9B;AAEA,SAASJ,SAAS,CAACT,UAAkB;EACnC,MAAMC,GAAG,GAAG,IAAIa,GAAG,CAACd,UAAU,CAAC;EAC/B,MAAMe,QAAQ,GAAGd,GAAG,CAACc,QAAQ;EAC7B,MAAMC,QAAQ,GAAGf,GAAG,CAACe,QAAQ;EAC7B,OAAO,MACL,uBAAY,EACVhB,UAAU,KAAK,UAAU,GACpB;IACDiB,IAAI,EAAEF,QAAQ;IACdG,IAAI,EAAE,IAAI;IACVC,SAAS,EAAEH,QAAQ;IACnBI,GAAG,EAAE;MAAEC,UAAU,EAAEN;IAAQ;GACpB,GACNf,UAAkB,CACxB;AACL","names":["StoreMakerLive","config","tsplus_module_3","cfg","storageUrl","url","startsWith","console","log","tsplus_module_2","client","RedisClient","makeRedisClient","makeRedis","CosmosClient","makeCosmosClient","dbName","StoreMaker","URL","hostname","password","host","port","auth_pass","tls","servername"],"sourceRoot":"","sources":["../../../_src/services/Store/index.ts"],"sourcesContent":[null]}
|
|
@@ -19,32 +19,32 @@ class CosmosDbOperationError {
|
|
|
19
19
|
this.message = message;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
const setup = (type, indexingPolicy) => tsplus_module_1.tap(
|
|
22
|
+
const setup = (type, indexingPolicy) => tsplus_module_1.tap(db => tsplus_module_1.tryPromise(() => db.containers.create({
|
|
23
23
|
id: type,
|
|
24
24
|
indexingPolicy
|
|
25
|
-
}).catch(err => console.warn(err))));
|
|
25
|
+
}).catch(err => console.warn(err))))(Cosmos.db);
|
|
26
26
|
// TODO: Error if current indexingPolicy does not match
|
|
27
27
|
// Effect.flatMap((db) => Effect.tryPromise(() => db.container(type).(indexes)))
|
|
28
28
|
function createContext() {
|
|
29
29
|
return (type, encode, decode,
|
|
30
30
|
// schemaVersion: string,
|
|
31
31
|
indexes) => {
|
|
32
|
-
return tsplus_module_1.map(
|
|
32
|
+
return tsplus_module_1.map(() => ({
|
|
33
33
|
find: simpledb.find(find, decode, type),
|
|
34
34
|
findBy,
|
|
35
35
|
save: simpledb.storeDirectly(store, type)
|
|
36
|
-
}));
|
|
36
|
+
}))(setup(type, indexes));
|
|
37
37
|
function find(id) {
|
|
38
|
-
return tsplus_module_1.map(
|
|
38
|
+
return tsplus_module_1.map(_ => tsplus_module_2.map(({
|
|
39
39
|
_etag,
|
|
40
40
|
data
|
|
41
41
|
}) => ({
|
|
42
42
|
version: _etag,
|
|
43
43
|
data
|
|
44
|
-
}))(_));
|
|
44
|
+
}))(_))(tsplus_module_1.map(i => tsplus_module_2.fromNullable(i.resource))(tsplus_module_1.flatMap(db => tsplus_module_1.tryPromise(() => db.container(type).item(id).read()))(Cosmos.db)));
|
|
45
45
|
}
|
|
46
46
|
function findBy(parameters) {
|
|
47
|
-
return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(
|
|
47
|
+
return tsplus_module_1.map(_ => tsplus_module_2.map(_ => _.id)(_))(tsplus_module_1.map(x => tsplus_module_3.head(x.resources))(tsplus_module_1.flatMap(db => tsplus_module_1.tryPromise(() => db.container(type).items.query({
|
|
48
48
|
query: `
|
|
49
49
|
SELECT TOP 1 ${type}.id
|
|
50
50
|
FROM ${type} i
|
|
@@ -56,7 +56,7 @@ WHERE (
|
|
|
56
56
|
name: `@${p}`,
|
|
57
57
|
value: parameters[p]
|
|
58
58
|
}))
|
|
59
|
-
}).fetchAll()))
|
|
59
|
+
}).fetchAll()))(Cosmos.db)));
|
|
60
60
|
}
|
|
61
61
|
function store(record, currentVersion) {
|
|
62
62
|
return tsplus_module_1.gen(function* ($) {
|
|
@@ -67,7 +67,15 @@ WHERE (
|
|
|
67
67
|
id: record.id,
|
|
68
68
|
timestamp: new Date(),
|
|
69
69
|
data
|
|
70
|
-
})))), currentVersion => tsplus_module_1.flatMap(
|
|
70
|
+
})))), currentVersion => tsplus_module_1.flatMap(x => {
|
|
71
|
+
if (x.statusCode === 412) {
|
|
72
|
+
return tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id));
|
|
73
|
+
}
|
|
74
|
+
if (x.statusCode > 299 || x.statusCode < 200) {
|
|
75
|
+
return tsplus_module_1.die(new CosmosDbOperationError("not able to update record: " + x.statusCode));
|
|
76
|
+
}
|
|
77
|
+
return tsplus_module_4.unit;
|
|
78
|
+
})(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.container(type).item(record.id).replace({
|
|
71
79
|
id: record.id,
|
|
72
80
|
timestamp: new Date(),
|
|
73
81
|
data
|
|
@@ -76,15 +84,7 @@ WHERE (
|
|
|
76
84
|
type: "IfMatch",
|
|
77
85
|
condition: currentVersion
|
|
78
86
|
}
|
|
79
|
-
})))
|
|
80
|
-
if (x.statusCode === 412) {
|
|
81
|
-
return tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id));
|
|
82
|
-
}
|
|
83
|
-
if (x.statusCode > 299 || x.statusCode < 200) {
|
|
84
|
-
return tsplus_module_1.die(new CosmosDbOperationError("not able to update record: " + x.statusCode));
|
|
85
|
-
}
|
|
86
|
-
return tsplus_module_4.unit;
|
|
87
|
-
}))(currentVersion));
|
|
87
|
+
})))))(currentVersion));
|
|
88
88
|
return {
|
|
89
89
|
version,
|
|
90
90
|
data: record
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosdb.cjs","mappings":";;;;;;;;;;AACA;AAEA;AAEA;AACA;AAAyC;AAAA;AAGzC,MAAMA,sBAAsB;EAC1BC,YAAqBC,OAAe;IAAf,YAAO,GAAPA,OAAO;EAAW;;AAGzC,MAAMC,KAAK,GAAG,CAACC,IAAY,EAAEC,cAA8B,KACzDC,
|
|
1
|
+
{"version":3,"file":"cosmosdb.cjs","mappings":"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","names":["CosmosDbOperationError","constructor","message","setup","type","indexingPolicy","tsplus_module_1","db","containers","create","id","catch","err","console","warn","Cosmos","createContext","encode","decode","indexes","find","simpledb","findBy","save","storeDirectly","store","_","tsplus_module_2","_etag","data","version","i","resource","container","item","read","parameters","x","tsplus_module_3","resources","items","query","map","k","join","p","name","value","fetchAll","record","currentVersion","$","timestamp","Date","statusCode","OptimisticLockException","replace","accessCondition","condition"],"sourceRoot":"","sources":["../../../_src/services/simpledb/cosmosdb.ts"],"sourcesContent":[null]}
|
|
@@ -33,22 +33,22 @@ function createContext() {
|
|
|
33
33
|
};
|
|
34
34
|
function store(record, currentVersion) {
|
|
35
35
|
const version = tsplus_module_1.getOrElse(() => "1")(tsplus_module_1.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
36
|
-
const getData = (0, _Function.flow)(encode, _ => tsplus_module_2.map(
|
|
36
|
+
const getData = (0, _Function.flow)(encode, _ => tsplus_module_2.map(data => (0, _utils.pretty)({
|
|
37
37
|
version,
|
|
38
38
|
timestamp: new Date(),
|
|
39
39
|
data
|
|
40
|
-
})));
|
|
40
|
+
}))(_));
|
|
41
41
|
const idx = makeIndexKey(record);
|
|
42
|
-
return tsplus_module_1.isSome(currentVersion) ? tsplus_module_2.map(
|
|
43
|
-
...x,
|
|
44
|
-
[idx.key]: record.id
|
|
45
|
-
})))))), () => ({
|
|
42
|
+
return tsplus_module_1.isSome(currentVersion) ? tsplus_module_2.map(() => ({
|
|
46
43
|
version,
|
|
47
44
|
data: record
|
|
48
|
-
}))
|
|
45
|
+
}))(tsplus_module_2.scoped(tsplus_module_2.zipRight(tsplus_module_2.orDie(tsplus_module_2.flatMap(x => x[record.id] ? tsplus_module_2.fail(() => new Error("Combination already exists, abort")) : tsplus_module_2.zipRight(writeIndex(idx, {
|
|
46
|
+
...x,
|
|
47
|
+
[idx.key]: record.id
|
|
48
|
+
}))(tsplus_module_2.flatMap(serialised => fu.writeTextFile(getFilename(type, record.id), serialised))(getData(record))))(readIndex(idx))))(lockIndex(record)))) : tsplus_module_2.map(() => ({
|
|
49
49
|
version,
|
|
50
50
|
data: record
|
|
51
|
-
}));
|
|
51
|
+
}))(tsplus_module_2.flatMap(serialised => fu.writeTextFile(getFilename(type, record.id), serialised))(getData(record)));
|
|
52
52
|
}
|
|
53
53
|
function lockIndex(record) {
|
|
54
54
|
const index = makeIndexKey(record);
|
|
@@ -63,34 +63,34 @@ function createContext() {
|
|
|
63
63
|
return lockIndexOnDisk(type)(lockKey);
|
|
64
64
|
}
|
|
65
65
|
function lockRecordOnDisk(type) {
|
|
66
|
-
return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(
|
|
66
|
+
return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
|
|
67
67
|
release
|
|
68
|
-
})), l => l.release);
|
|
68
|
+
}))(lockFile(getFilename(type, id))), l => l.release);
|
|
69
69
|
}
|
|
70
70
|
function lockIndexOnDisk(type) {
|
|
71
|
-
return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(
|
|
71
|
+
return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
|
|
72
72
|
release
|
|
73
|
-
})), l => l.release);
|
|
73
|
+
}))(lockFile(getIdxName(type, id))), l => l.release);
|
|
74
74
|
}
|
|
75
75
|
function readFile(filePath) {
|
|
76
|
-
return tsplus_module_2.catchAll(
|
|
76
|
+
return tsplus_module_2.catchAll(err => tsplus_module_2.die(new _shared.ConnectionException(err)))(fu.readTextFile(filePath));
|
|
77
77
|
}
|
|
78
78
|
function find(type) {
|
|
79
79
|
return id => {
|
|
80
|
-
return tsplus_module_2.map(
|
|
80
|
+
return tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_))(tryRead(getFilename(type, id)));
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
function getIdx(index) {
|
|
84
|
-
return tsplus_module_2.map(
|
|
84
|
+
return tsplus_module_2.map(idx => tsplus_module_1.fromNullable(idx[index.key]))(readIndex(index));
|
|
85
85
|
}
|
|
86
86
|
function readIndex(index) {
|
|
87
|
-
return tsplus_module_2.map(
|
|
87
|
+
return tsplus_module_2.map(_ => tsplus_module_1.match(() => ({}), x => JSON.parse(x))(_))(tryRead(getIdxName(type, index.doc)));
|
|
88
88
|
}
|
|
89
89
|
function writeIndex(index, content) {
|
|
90
90
|
return (0, _Function.pipe)(JSON.stringify(content), serialised => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
91
91
|
}
|
|
92
92
|
function tryRead(filePath) {
|
|
93
|
-
return tsplus_module_2.flatMap(
|
|
93
|
+
return tsplus_module_2.flatMap(exists => !exists ? tsplus_module_2.sync(() => tsplus_module_3.none) : tsplus_module_2.map(tsplus_module_1.some)(readFile(filePath)))(fu.fileExists(filePath));
|
|
94
94
|
}
|
|
95
95
|
function getFilename(type, id) {
|
|
96
96
|
return `${dir}/v${schemaVersion}.${(0, _shared.getRecordName)(type, id)}.json`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskdb.cjs","mappings":";;;;;;;;;;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAyC;AAAA;AAAA;AAGnC,SAAUA,aAAa;EAC3B,OAAO,CACLC,IAAY,EACZC,MAAiD,EACjDC,MAA8C,EAC9CC,aAAqB,EACrBC,YAA6B,EAC7BC,GAAG,GAAG,WAAW,KACf;IACFC,UAAU,CAACD,GAAG,CAAC;IACf,MAAME,UAAU,GAAG,aAAa;IAChC,MAAMC,WAAW,GAAGC,UAAU,CAACT,IAAI,EAAEO,UAAU,CAAC;IAChD,IAAI,CAACG,WAAE,CAACC,UAAU,CAACH,WAAW,CAAC,EAAE;MAC/BE,WAAE,CAACE,aAAa,CAACJ,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC;;IAG5C,OAAO;MACLK,IAAI,EAAEC,QAAQ,CAACD,IAAI,CAACA,IAAI,CAACb,IAAI,CAAC,EAAEE,MAAM,EAAEF,IAAI,CAAC;MAC7Ce,WAAW,EAAEC,MAAM;MACnBC,IAAI,EAAEH,QAAQ,CAACI,KAAK,CAACL,IAAI,CAACb,IAAI,CAAC,EAAEkB,KAAK,EAAEC,gBAAgB,CAACnB,IAAI,CAAC,EAAEA,IAAI;KACrE;IAED,SAASkB,KAAK,CAACE,MAAS,EAAEC,cAA+B;MACvD,MAAMC,OAAO,GAAGC,0BAEH,MAAM,GAAG,EAFNA,oBACTC,EAAE,IAAI,CAACC,QAAQ,CAACD,EAAE,CAAC,GAAG,CAAC,EAAEE,QAAQ,EAAE,EAD1BL,cAAc,CACa,CACpB;MACvB,MAAMM,OAAO,GAAG,kBAAI,EAClB1B,MAAM,EACN2B,CAAC,IAAIC,
|
|
1
|
+
{"version":3,"file":"diskdb.cjs","mappings":";;;;;;;;;;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAyC;AAAA;AAAA;AAGnC,SAAUA,aAAa;EAC3B,OAAO,CACLC,IAAY,EACZC,MAAiD,EACjDC,MAA8C,EAC9CC,aAAqB,EACrBC,YAA6B,EAC7BC,GAAG,GAAG,WAAW,KACf;IACFC,UAAU,CAACD,GAAG,CAAC;IACf,MAAME,UAAU,GAAG,aAAa;IAChC,MAAMC,WAAW,GAAGC,UAAU,CAACT,IAAI,EAAEO,UAAU,CAAC;IAChD,IAAI,CAACG,WAAE,CAACC,UAAU,CAACH,WAAW,CAAC,EAAE;MAC/BE,WAAE,CAACE,aAAa,CAACJ,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC;;IAG5C,OAAO;MACLK,IAAI,EAAEC,QAAQ,CAACD,IAAI,CAACA,IAAI,CAACb,IAAI,CAAC,EAAEE,MAAM,EAAEF,IAAI,CAAC;MAC7Ce,WAAW,EAAEC,MAAM;MACnBC,IAAI,EAAEH,QAAQ,CAACI,KAAK,CAACL,IAAI,CAACb,IAAI,CAAC,EAAEkB,KAAK,EAAEC,gBAAgB,CAACnB,IAAI,CAAC,EAAEA,IAAI;KACrE;IAED,SAASkB,KAAK,CAACE,MAAS,EAAEC,cAA+B;MACvD,MAAMC,OAAO,GAAGC,0BAEH,MAAM,GAAG,EAFNA,oBACTC,EAAE,IAAI,CAACC,QAAQ,CAACD,EAAE,CAAC,GAAG,CAAC,EAAEE,QAAQ,EAAE,EAD1BL,cAAc,CACa,CACpB;MACvB,MAAMM,OAAO,GAAG,kBAAI,EAClB1B,MAAM,EACN2B,CAAC,IAAIC,oBAAMC,IAAI,IAAI,iBAAM,EAAC;QAAER,OAAO;QAAES,SAAS,EAAE,IAAIC,IAAI,EAAE;QAAEF;MAAI,CAAE,CAAC,EAA9DF,CAAC,CAA8D,CACrE;MAED,MAAMK,GAAG,GAAG7B,YAAY,CAACgB,MAAM,CAAC;MAChC,OAAOG,qCAAc,CAAS,GAC1BM,oBAUY,OAAO;QAAEP,OAAO;QAAEQ,IAAI,EAAEV;MAAM,CAAsB,0BAVhES,+CAEEA,wBAAuBK,CAAC,IACtBA,CAAC,CAACd,MAAM,CAACe,EAAE,CAAC,GACRN,qBAAY,MAAM,IAAIO,KAAK,CAAC,mCAAmC,CAAC,CAAC,GACjEP,yBAEUQ,UAAU,CAACJ,GAAG,EAAE;QAAE,GAAGC,CAAC;QAAE,CAACD,GAAG,CAACK,GAAG,GAAGlB,MAAM,CAACe;MAAE,CAAE,CAAC,EAFzDN,wBACSU,UAAU,IAAIC,EAAE,CAACC,aAAa,CAACC,WAAW,CAAC1C,IAAI,EAAEoB,MAAM,CAACe,EAAE,CAAC,EAAEI,UAAU,CAAC,EADjFZ,OAAO,CAACP,MAAM,CAAC,CACmE,CACxB,EALhEuB,SAAS,CAACV,GAAG,CAAC,CAMb,GARHW,SAAS,CAACxB,MAAM,CAAC,CAShB,EACgE,GACjES,oBAEK,OAAO;QAAEP,OAAO;QAAEQ,IAAI,EAAEV;MAAM,CAAsB,GAFzDS,wBACSU,UAAU,IAAIC,EAAE,CAACC,aAAa,CAACC,WAAW,CAAC1C,IAAI,EAAEoB,MAAM,CAACe,EAAE,CAAC,EAAEI,UAAU,CAAC,EADjFZ,OAAO,CAACP,MAAM,CAAC,CACmE,CACxB;IAChE;IAEA,SAASwB,SAAS,CAACxB,MAAS;MAC1B,MAAMyB,KAAK,GAAGzC,YAAY,CAACgB,MAAM,CAAC;MAClC,OAAO0B,aAAa,CAACD,KAAK,CAAC;IAC7B;IAEA,SAASC,aAAa,CAAClB,CAAQ;MAC7B;;;MAGA;MACA,MAAMmB,OAAO,GAAGxC,UAAU;MAC1B,OAAOyC,eAAe,CAAChD,IAAI,CAAC,CAAC+C,OAAO,CAAC;IACvC;IAEA,SAAS5B,gBAAgB,CAACnB,IAAY;MACpC,OAAQmC,EAAU,IAChBN,uDACEoB,GAAG,IAAI,IAAIC,qCAA6B,CAAClD,IAAI,EAAEmC,EAAE,EAAEc,GAAY,CAAC,EAChEE,OAAO,KAAK;QAAEA;MAAO,CAAE,CAAC,EAF1BC,QAAQ,CAACV,WAAW,CAAC1C,IAAI,EAAEmC,EAAE,CAAC,CAAC,CAG9B,EACCkB,CAAC,IAAIA,CAAC,CAACF,OAAO,CACf;IACL;IAEA,SAASH,eAAe,CAAChD,IAAY;MACnC,OAAQmC,EAAU,IAChBN,uDACEoB,GAAG,IAAI,IAAIC,qCAA6B,CAAClD,IAAI,EAAEmC,EAAE,EAAEc,GAAY,CAAC,EAChEE,OAAO,KAAK;QAAEA;MAAO,CAAE,CAAC,EAF1BC,QAAQ,CAAC3C,UAAU,CAACT,IAAI,EAAEmC,EAAE,CAAC,CAAC,CAG7B,EACCkB,CAAC,IAAIA,CAAC,CAACF,OAAO,CACf;IACL;IAEA,SAASG,QAAQ,CAACC,QAAgB;MAChC,OAAO1B,yBAEKoB,GAAG,IAAIpB,oBAAW,IAAI2B,2BAAmB,CAACP,GAAY,CAAC,CAAC,EAF7DT,EAAE,CACNiB,YAAY,CAACF,QAAQ,CAAC,CAC4C;IACvE;IAEA,SAAS1C,IAAI,CAACb,IAAY;MACxB,OAAQmC,EAAU,IAAI;QACpB,OAAON,oBACLD,CAAC,IAAIL,oBAAMmC,CAAC,IAAIC,IAAI,CAACC,KAAK,CAACF,CAAC,CAAqB,EAA5C9B,CAAC,CAA4C,EAD7CiC,OAAO,CAACnB,WAAW,CAAC1C,IAAI,EAAEmC,EAAE,CAAC,CAAC,CAEpC;MACH,CAAC;IACH;IAEA,SAASnB,MAAM,CAAC6B,KAAY;MAC1B,OAAOhB,oBAAqBI,GAAG,IAAIV,6BAAoBU,GAAG,CAACY,KAAK,CAACP,GAAG,CAAC,CAAC,EAA/DK,SAAS,CAACE,KAAK,CAAC,CAAgD;IACzE;IAEA,SAASF,SAAS,CAACE,KAAY;MAC7B,OAAOhB,oBACLD,CAAC,IACCL,sBACE,OAAO,EAA2B,GAClCW,CAAC,IAAIyB,IAAI,CAACC,KAAK,CAAC1B,CAAC,CAAyB,EAF5CN,CAAC,CAGA,EALEiC,OAAO,CAACpD,UAAU,CAACT,IAAI,EAAE6C,KAAK,CAACiB,GAAG,CAAC,CAAC,CAM1C;IACH;IAEA,SAASzB,UAAU,CAACQ,KAAY,EAAEkB,OAA6B;MAC7D,OAAO,kBAAI,EAACJ,IAAI,CAACK,SAAS,CAACD,OAAO,CAAC,EAAExB,UAAU,IAAIC,EAAE,CAACC,aAAa,CAAChC,UAAU,CAACT,IAAI,EAAE6C,KAAK,CAACiB,GAAG,CAAC,EAAEvB,UAAU,CAAC,CAAC;IAC/G;IAEA,SAASsB,OAAO,CAACN,QAAgB;MAC/B,OAAO1B,wBAEIoC,MAAM,IAAI,CAACA,MAAM,GAAGpC,gDAAmB,GAAGA,kDAAQ,CAAC0B,QAAQ,CAAC,CAAiB,EAFjFf,EAAE,CACN0B,UAAU,CAACX,QAAQ,CAAC,CACkE;IAC3F;IAEA,SAASb,WAAW,CAAC1C,IAAY,EAAEmC,EAAU;MAC3C,OAAO,GAAG9B,GAAG,KAAKF,aAAa,IAAI,yBAAa,EAACH,IAAI,EAAEmC,EAAE,CAAC,OAAO;IACnE;IAEA,SAAS1B,UAAU,CAACT,IAAY,EAAEmC,EAAU;MAC1C,OAAO,GAAG9B,GAAG,KAAKF,aAAa,IAAI,wBAAY,EAACH,IAAI,EAAEmC,EAAE,CAAC,OAAO;IAClE;EACF,CAAC;AACH;AAEA,SAASiB,QAAQ,CAACe,QAAgB;EAChC,OAAOtC,2BAAkB,MAAMuC,GAAG,CAACC,IAAI,CAACF,QAAQ,CAAC,CAACG,IAAI,CAAC,kBAAI,8BAAoB1C,CAAC,IAAGC,sBAACD,CAAC,CAAM,CAAC,CAAC,CAAC;AAChG;AAEA;AACA,IAAI2C,WAAW,GAAG,KAAK;AACjB,SAAUjE,UAAU,CAACD,GAAW;EACpC,IAAIkE,WAAW,EAAE;IACf;;EAGF,IAAI,CAAC7D,WAAE,CAACC,UAAU,CAACN,GAAG,CAAC,EAAE;IACvBK,WAAE,CAAC8D,SAAS,CAACnE,GAAG,CAAC;;EAEnBkE,WAAW,GAAG,IAAI;AACpB","names":["createContext","type","encode","decode","schemaVersion","makeIndexKey","dir","initialise","globalLock","typeLockKey","getIdxName","fs","existsSync","writeFileSync","find","simpledb","findByIndex","getIdx","save","store","lockRecordOnDisk","record","currentVersion","version","tsplus_module_1","cv","parseInt","toString","getData","_","tsplus_module_2","data","timestamp","Date","idx","x","id","Error","writeIndex","key","serialised","fu","writeTextFile","getFilename","readIndex","lockIndex","index","lockDiskIndex","lockKey","lockIndexOnDisk","err","CouldNotAquireDbLockException","release","lockFile","l","readFile","filePath","ConnectionException","readTextFile","s","JSON","parse","tryRead","doc","content","stringify","exists","fileExists","fileName","PLF","lock","then","initialised","mkdirSync"],"sourceRoot":"","sources":["../../../_src/services/simpledb/diskdb.ts"],"sourcesContent":[null]}
|
|
@@ -26,7 +26,7 @@ function createContext() {
|
|
|
26
26
|
save: simpledb.store(find, store, bogusLock, type)
|
|
27
27
|
};
|
|
28
28
|
function find(id) {
|
|
29
|
-
return tsplus_module_3.mapOption(tsplus_module_3.flatMapOption(tsplus_module_2.map(
|
|
29
|
+
return tsplus_module_3.mapOption(tsplus_module_3.flatMapOption(tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_))(storage.find((0, _shared.getRecordName)(type, id))), parseSDB), ({
|
|
30
30
|
data,
|
|
31
31
|
version
|
|
32
32
|
}) => ({
|
|
@@ -36,7 +36,7 @@ function createContext() {
|
|
|
36
36
|
}
|
|
37
37
|
function findBy(keys, eq) {
|
|
38
38
|
// Naive implementation, fine for in memory testing purposes.
|
|
39
|
-
return tsplus_module_2.map(tsplus_module_2.gen(function* ($) {
|
|
39
|
+
return tsplus_module_2.map(tsplus_module_1.fromNullable)(tsplus_module_2.gen(function* ($) {
|
|
40
40
|
for (const [, value] of storage) {
|
|
41
41
|
const sdb_ = JSON.parse(value);
|
|
42
42
|
const sdb = yield* $(parseSDB(sdb_));
|
|
@@ -44,25 +44,25 @@ function createContext() {
|
|
|
44
44
|
data: JSON.parse(sdb.data),
|
|
45
45
|
version: sdb.version
|
|
46
46
|
};
|
|
47
|
-
const r = yield* $(tsplus_module_2.exit(tsplus_module_2.flatMap(
|
|
47
|
+
const r = yield* $(tsplus_module_2.exit(tsplus_module_2.flatMap(d => eq(keys, d) ? tsplus_module_2.sync(() => d) : tsplus_module_2.fail("not equals"))(decode(cr.data))));
|
|
48
48
|
if (tsplus_module_4.isSuccess(r)) {
|
|
49
49
|
return r.value;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
return null;
|
|
53
|
-
})
|
|
53
|
+
}));
|
|
54
54
|
}
|
|
55
55
|
function store(record, currentVersion) {
|
|
56
56
|
const version = tsplus_module_1.getOrElse(() => "1")(tsplus_module_1.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
57
|
-
const getData = (0, _Function.flow)(encode, _ => tsplus_module_2.map(
|
|
57
|
+
const getData = (0, _Function.flow)(encode, _ => tsplus_module_2.map(data => JSON.stringify({
|
|
58
58
|
version,
|
|
59
59
|
timestamp: new Date(),
|
|
60
60
|
data
|
|
61
|
-
})));
|
|
62
|
-
return tsplus_module_2.map(
|
|
61
|
+
}))(tsplus_module_2.map(JSON.stringify)(_)));
|
|
62
|
+
return tsplus_module_2.map(() => ({
|
|
63
63
|
version,
|
|
64
64
|
data: record
|
|
65
|
-
}));
|
|
65
|
+
}))(tsplus_module_2.flatMap(serialised => storage.set((0, _shared.getRecordName)(type, record.id), serialised))(getData(record)));
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memdb.cjs","mappings":";;;;;;;;;;AAAA;AACA;AAGA;AACA;AAAyC;AAAA;AAGzC;AACA;AACA,MAAMA,OAAO,GAAG,mBAAO,GAAkB;AAEzC,MAAMC,QAAQ,GAAgCC,EAAE,CAACC,WAAW,CAA3CC,0BAAkB,CAACC,MAAM,CAAkB;AAEtD,SAAUC,aAAa;EAC3B,OAAO,CACLC,IAAY,EACZC,MAAiD,EACjDC,MAA8C,KAC5C;IACF,OAAO;MACLC,IAAI,EAAEC,QAAQ,CAACD,IAAI,CAACA,IAAI,EAAED,MAAM,EAAEF,IAAI,CAAC;MACvCK,MAAM;MACNC,IAAI,EAAEF,QAAQ,CAACG,KAAK,CAACJ,IAAI,EAAEI,KAAK,EAAEC,SAAS,EAAER,IAAI;KAClD;IAED,SAASG,IAAI,CAACM,EAAU;MACtB,OAAOC,
|
|
1
|
+
{"version":3,"file":"memdb.cjs","mappings":"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","names":["storage","parseSDB","MO","condemnFail","SerializedDBRecord","Parser","createContext","type","encode","decode","find","simpledb","findBy","save","store","bogusLock","id","tsplus_module_3","_","tsplus_module_1","s","JSON","parse","data","version","keys","eq","tsplus_module_2","$","value","sdb_","sdb","cr","r","d","tsplus_module_4","record","currentVersion","cv","parseInt","toString","getData","stringify","timestamp","Date","serialised","set"],"sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"sourcesContent":[null]}
|