@effect-app/infra 0.24.3 → 0.25.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/_cjs/_ext/Array.cjs +2 -3
  3. package/_cjs/_ext/Array.cjs.map +1 -1
  4. package/_cjs/api/codec.cjs +1 -1
  5. package/_cjs/api/codec.cjs.map +1 -1
  6. package/_cjs/api/defaultErrorHandler.cjs +17 -18
  7. package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
  8. package/_cjs/api/express/makeJsonSchema.cjs +4 -4
  9. package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
  10. package/_cjs/api/express/makeOpenApiSpecs.cjs +2 -2
  11. package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
  12. package/_cjs/api/express/schema/requestHandler.cjs +45 -45
  13. package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
  14. package/_cjs/api/express/schema/routing.cjs +19 -19
  15. package/_cjs/api/express/schema/routing.cjs.map +1 -1
  16. package/_cjs/api/reportError.cjs +2 -2
  17. package/_cjs/api/reportError.cjs.map +1 -1
  18. package/_cjs/api/routing.cjs +54 -54
  19. package/_cjs/api/routing.cjs.map +1 -1
  20. package/_cjs/api/setupRequest.cjs +2 -2
  21. package/_cjs/api/setupRequest.cjs.map +1 -1
  22. package/_cjs/api/writeDocs.cjs +6 -6
  23. package/_cjs/api/writeDocs.cjs.map +1 -1
  24. package/_cjs/errorReporter.cjs +4 -4
  25. package/_cjs/errorReporter.cjs.map +1 -1
  26. package/_cjs/instrument.cjs +1 -1
  27. package/_cjs/instrument.cjs.map +1 -1
  28. package/_cjs/rateLimit.cjs +8 -8
  29. package/_cjs/rateLimit.cjs.map +1 -1
  30. package/_cjs/services/Emailer/Sendgrid.cjs +7 -8
  31. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
  32. package/_cjs/services/Emailer/fake.cjs +4 -5
  33. package/_cjs/services/Emailer/fake.cjs.map +1 -1
  34. package/_cjs/services/Operations/live.cjs +10 -10
  35. package/_cjs/services/Operations/live.cjs.map +1 -1
  36. package/_cjs/services/Operations/service.cjs +3 -3
  37. package/_cjs/services/Operations/service.cjs.map +1 -1
  38. package/_cjs/services/QueueMaker/errors.cjs +3 -3
  39. package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
  40. package/_cjs/services/QueueMaker/memQueue.cjs +10 -11
  41. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  42. package/_cjs/services/QueueMaker/sbqueue.cjs +5 -5
  43. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  44. package/_cjs/services/Repository.cjs +21 -21
  45. package/_cjs/services/Repository.cjs.map +1 -1
  46. package/_cjs/services/Store/Cosmos.cjs +42 -42
  47. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  48. package/_cjs/services/Store/Disk.cjs +20 -21
  49. package/_cjs/services/Store/Disk.cjs.map +1 -1
  50. package/_cjs/services/Store/Memory.cjs +24 -24
  51. package/_cjs/services/Store/Memory.cjs.map +1 -1
  52. package/_cjs/services/Store/Redis.cjs +14 -15
  53. package/_cjs/services/Store/Redis.cjs.map +1 -1
  54. package/_cjs/services/Store/codeFilter.test.cjs +5 -5
  55. package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
  56. package/_cjs/services/Store/index.cjs +4 -4
  57. package/_cjs/services/Store/index.cjs.map +1 -1
  58. package/_cjs/services/Store/utils.cjs +4 -4
  59. package/_cjs/services/Store/utils.cjs.map +1 -1
  60. package/_cjs/services/simpledb/cosmosdb.cjs +19 -19
  61. package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
  62. package/_cjs/services/simpledb/diskdb.cjs +18 -18
  63. package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
  64. package/_cjs/services/simpledb/memdb.cjs +9 -9
  65. package/_cjs/services/simpledb/memdb.cjs.map +1 -1
  66. package/_cjs/services/simpledb/mongodb.cjs +16 -16
  67. package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
  68. package/_cjs/services/simpledb/redisdb.cjs +20 -20
  69. package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
  70. package/_cjs/services/simpledb/simpledb.cjs +9 -9
  71. package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
  72. package/_src/RequestContext.ts +2 -2
  73. package/_src/api/reportError.ts +2 -2
  74. package/_src/rateLimit.ts +4 -4
  75. package/_src/services/QueueMaker/errors.ts +1 -1
  76. package/dist/RequestContext.d.ts +2 -2
  77. package/dist/_ext/Array.js +3 -4
  78. package/dist/api/codec.js +2 -2
  79. package/dist/api/defaultErrorHandler.js +18 -18
  80. package/dist/api/express/makeJsonSchema.js +5 -5
  81. package/dist/api/express/makeOpenApiSpecs.d.ts +1 -1
  82. package/dist/api/express/makeOpenApiSpecs.js +2 -2
  83. package/dist/api/express/schema/requestHandler.js +41 -41
  84. package/dist/api/express/schema/routing.js +20 -20
  85. package/dist/api/reportError.d.ts +2 -2
  86. package/dist/api/reportError.d.ts.map +1 -1
  87. package/dist/api/reportError.js +4 -4
  88. package/dist/api/routing.d.ts +1 -1
  89. package/dist/api/routing.d.ts.map +1 -1
  90. package/dist/api/routing.js +63 -63
  91. package/dist/api/setupRequest.js +3 -3
  92. package/dist/api/writeDocs.js +7 -7
  93. package/dist/errorReporter.js +3 -3
  94. package/dist/instrument.js +2 -2
  95. package/dist/rateLimit.d.ts +3 -3
  96. package/dist/rateLimit.js +9 -9
  97. package/dist/services/Emailer/Sendgrid.js +8 -9
  98. package/dist/services/Emailer/fake.js +5 -6
  99. package/dist/services/Operations/live.js +12 -12
  100. package/dist/services/Operations/service.js +4 -4
  101. package/dist/services/QueueMaker/errors.d.ts +1 -1
  102. package/dist/services/QueueMaker/errors.d.ts.map +1 -1
  103. package/dist/services/QueueMaker/errors.js +4 -4
  104. package/dist/services/QueueMaker/memQueue.js +10 -10
  105. package/dist/services/QueueMaker/sbqueue.js +5 -5
  106. package/dist/services/Repository.d.ts +14 -14
  107. package/dist/services/Repository.js +15 -15
  108. package/dist/services/Store/Cosmos.js +44 -44
  109. package/dist/services/Store/Disk.js +22 -23
  110. package/dist/services/Store/Memory.js +26 -26
  111. package/dist/services/Store/Redis.js +15 -16
  112. package/dist/services/Store/index.js +5 -5
  113. package/dist/services/Store/utils.js +5 -5
  114. package/dist/services/simpledb/cosmosdb.js +19 -19
  115. package/dist/services/simpledb/diskdb.js +15 -15
  116. package/dist/services/simpledb/memdb.js +10 -10
  117. package/dist/services/simpledb/mongodb.js +15 -15
  118. package/dist/services/simpledb/redisdb.js +17 -17
  119. package/dist/services/simpledb/simpledb.js +12 -12
  120. package/package.json +8 -8
@@ -19,32 +19,32 @@ class CosmosDbOperationError {
19
19
  this.message = message;
20
20
  }
21
21
  }
22
- const setup = (type, indexingPolicy) => tsplus_module_1.tap(db => tsplus_module_1.tryPromise(() => db.containers.create({
22
+ const setup = (type, indexingPolicy) => tsplus_module_1.tap(Cosmos.db, db => tsplus_module_1.tryPromise(() => db.containers.create({
23
23
  id: type,
24
24
  indexingPolicy
25
- }).catch(err => console.warn(err))))(Cosmos.db);
25
+ }).catch(err => console.warn(err))));
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(setup(type, indexes), () => ({
33
33
  find: simpledb.find(find, decode, type),
34
34
  findBy,
35
35
  save: simpledb.storeDirectly(store, type)
36
- }))(setup(type, indexes));
36
+ }));
37
37
  function find(id) {
38
- return tsplus_module_1.map(_ => tsplus_module_2.map(({
38
+ return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos.db, db => tsplus_module_1.tryPromise(() => db.container(type).item(id).read())), i => tsplus_module_2.fromNullable(i.resource)), _ => tsplus_module_2.map(_, ({
39
39
  _etag,
40
40
  data
41
41
  }) => ({
42
42
  version: _etag,
43
43
  data
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)));
44
+ })));
45
45
  }
46
46
  function findBy(parameters) {
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({
47
+ return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos.db, 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,26 +56,18 @@ WHERE (
56
56
  name: `@${p}`,
57
57
  value: parameters[p]
58
58
  }))
59
- }).fetchAll()))(Cosmos.db)));
59
+ }).fetchAll())), x => tsplus_module_3.head(x.resources)), _ => tsplus_module_2.map(_, _ => _.id));
60
60
  }
61
61
  function store(record, currentVersion) {
62
62
  return tsplus_module_1.gen(function* ($) {
63
63
  const version = "_etag"; // we get this from the etag anyway.
64
64
  const db = yield* $(Cosmos.db);
65
65
  const data = yield* $(encode(record));
66
- yield* $(tsplus_module_2.match(() => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.container(type).items.create({
66
+ yield* $(tsplus_module_2.match(currentVersion, () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.container(type).items.create({
67
67
  id: record.id,
68
68
  timestamp: new Date(),
69
69
  data
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({
70
+ })))), currentVersion => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.container(type).item(record.id).replace({
79
71
  id: record.id,
80
72
  timestamp: new Date(),
81
73
  data
@@ -84,7 +76,15 @@ WHERE (
84
76
  type: "IfMatch",
85
77
  condition: currentVersion
86
78
  }
87
- })))))(currentVersion));
79
+ }))), x => {
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
+ })));
88
88
  return {
89
89
  version,
90
90
  data: record
@@ -1 +1 @@
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]}
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","createContext","encode","decode","indexes","find","simpledb","findBy","save","storeDirectly","store","container","item","read","i","tsplus_module_2","resource","_","_etag","data","version","parameters","items","query","map","k","join","p","name","value","fetchAll","x","tsplus_module_3","resources","record","currentVersion","$","Cosmos","timestamp","Date","replace","accessCondition","condition","statusCode","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/cosmosdb.ts"],"sourcesContent":[null]}
@@ -32,23 +32,23 @@ function createContext() {
32
32
  save: simpledb.store(find(type), store, lockRecordOnDisk(type), type)
33
33
  };
34
34
  function store(record, currentVersion) {
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(data => (0, _utils.pretty)({
35
+ const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
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
- version,
44
- data: record
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, {
42
+ return tsplus_module_1.isSome(currentVersion) ? tsplus_module_2.map(tsplus_module_2.scoped(tsplus_module_2.zipRight(lockIndex(record), tsplus_module_2.orDie(tsplus_module_2.flatMap(readIndex(idx), x => x[record.id] ? tsplus_module_2.fail(() => new Error("Combination already exists, abort")) : tsplus_module_2.zipRight(tsplus_module_2.flatMap(getData(record), serialised => fu.writeTextFile(getFilename(type, record.id), serialised)), writeIndex(idx, {
46
43
  ...x,
47
44
  [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(() => ({
45
+ })))))), () => ({
46
+ version,
47
+ data: record
48
+ })) : tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), serialised => fu.writeTextFile(getFilename(type, record.id), serialised)), () => ({
49
49
  version,
50
50
  data: record
51
- }))(tsplus_module_2.flatMap(serialised => fu.writeTextFile(getFilename(type, record.id), serialised))(getData(record)));
51
+ }));
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(err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
66
+ return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getFilename(type, id)), err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
67
67
  release
68
- }))(lockFile(getFilename(type, id))), l => l.release);
68
+ })), l => l.release);
69
69
  }
70
70
  function lockIndexOnDisk(type) {
71
- return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
71
+ return id => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)), err => new _shared.CouldNotAquireDbLockException(type, id, err), release => ({
72
72
  release
73
- }))(lockFile(getIdxName(type, id))), l => l.release);
73
+ })), l => l.release);
74
74
  }
75
75
  function readFile(filePath) {
76
- return tsplus_module_2.catchAll(err => tsplus_module_2.die(new _shared.ConnectionException(err)))(fu.readTextFile(filePath));
76
+ return tsplus_module_2.catchAll(fu.readTextFile(filePath), err => tsplus_module_2.die(new _shared.ConnectionException(err)));
77
77
  }
78
78
  function find(type) {
79
79
  return id => {
80
- return tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_))(tryRead(getFilename(type, id)));
80
+ return tsplus_module_2.map(tryRead(getFilename(type, id)), _ => tsplus_module_1.map(_, s => JSON.parse(s)));
81
81
  };
82
82
  }
83
83
  function getIdx(index) {
84
- return tsplus_module_2.map(idx => tsplus_module_1.fromNullable(idx[index.key]))(readIndex(index));
84
+ return tsplus_module_2.map(readIndex(index), idx => tsplus_module_1.fromNullable(idx[index.key]));
85
85
  }
86
86
  function readIndex(index) {
87
- return tsplus_module_2.map(_ => tsplus_module_1.match(() => ({}), x => JSON.parse(x))(_))(tryRead(getIdxName(type, index.doc)));
87
+ return tsplus_module_2.map(tryRead(getIdxName(type, index.doc)), _ => tsplus_module_1.match(_, () => ({}), x => JSON.parse(x)));
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(exists => !exists ? tsplus_module_2.sync(() => tsplus_module_3.none) : tsplus_module_2.map(tsplus_module_1.some)(readFile(filePath)))(fu.fileExists(filePath));
93
+ return tsplus_module_2.flatMap(fu.fileExists(filePath), exists => !exists ? tsplus_module_2.sync(() => tsplus_module_3.none) : tsplus_module_2.map(readFile(filePath), tsplus_module_1.some));
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":"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","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]}
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,4DAAc,EACvBC,EAAE,IAAI,CAACC,QAAQ,CAACD,EAAE,CAAC,GAAG,CAAC,EAAEE,QAAQ,EAAE,CAAC,EAC9B,MAAM,GAAG,CAAC;MACvB,MAAMC,OAAO,GAAG,kBAAI,EAClB1B,MAAM,EACN2B,CAAC,IAAIC,qBAAC,EAAKC,IAAI,IAAI,iBAAM,EAAC;QAAER,OAAO;QAAES,SAAS,EAAE,IAAIC,IAAI,EAAE;QAAEF;MAAI,CAAE,CAAC,CAAC,CACrE;MAED,MAAMG,GAAG,GAAG7B,YAAY,CAACgB,MAAM,CAAC;MAChC,OAAOG,qCAAc,CAAS,GAC1BM,6EAAS,CAACT,MAAM,CAAC,wBAEfS,iCAAS,CAACI,GAAG,CAAC,EAASC,CAAC,IACtBA,CAAC,CAACd,MAAM,CAACe,EAAE,CAAC,GACRN,qBAAY,MAAM,IAAIO,KAAK,CAAC,mCAAmC,CAAC,CAAC,GACjEP,wDAAO,CAACT,MAAM,CAAC,EACNiB,UAAU,IAAIC,EAAE,CAACC,aAAa,CAACC,WAAW,CAACxC,IAAI,EAAEoB,MAAM,CAACe,EAAE,CAAC,EAAEE,UAAU,CAAC,CAAC,EACxEI,UAAU,CAACR,GAAG,EAAE;QAAE,GAAGC,CAAC;QAAE,CAACD,GAAG,CAACS,GAAG,GAAGtB,MAAM,CAACe;MAAE,CAAE,CAAC,CAAC,CAC/D,EACF,GACW,OAAO;QAAEb,OAAO;QAAEQ,IAAI,EAAEV;MAAM,CAAsB,EAAC,GACjES,mDAAO,CAACT,MAAM,CAAC,EACNiB,UAAU,IAAIC,EAAE,CAACC,aAAa,CAACC,WAAW,CAACxC,IAAI,EAAEoB,MAAM,CAACe,EAAE,CAAC,EAAEE,UAAU,CAAC,CAAC,EAC7E,OAAO;QAAEf,OAAO;QAAEQ,IAAI,EAAEV;MAAM,CAAsB,EAAC;IAChE;IAEA,SAASuB,SAAS,CAACvB,MAAS;MAC1B,MAAMwB,KAAK,GAAGxC,YAAY,CAACgB,MAAM,CAAC;MAClC,OAAOyB,aAAa,CAACD,KAAK,CAAC;IAC7B;IAEA,SAASC,aAAa,CAACjB,CAAQ;MAC7B;;;MAGA;MACA,MAAMkB,OAAO,GAAGvC,UAAU;MAC1B,OAAOwC,eAAe,CAAC/C,IAAI,CAAC,CAAC8C,OAAO,CAAC;IACvC;IAEA,SAAS3B,gBAAgB,CAACnB,IAAY;MACpC,OAAQmC,EAAU,IAChBN,+DAAQ,CAACW,WAAW,CAACxC,IAAI,EAAEmC,EAAE,CAAC,CAAC,EAC7Ba,GAAG,IAAI,IAAIC,qCAA6B,CAACjD,IAAI,EAAEmC,EAAE,EAAEa,GAAY,CAAC,EAChEE,OAAO,KAAK;QAAEA;MAAO,CAAE,CAAC,CACzB,EACCC,CAAC,IAAIA,CAAC,CAACD,OAAO,CACf;IACL;IAEA,SAASH,eAAe,CAAC/C,IAAY;MACnC,OAAQmC,EAAU,IAChBN,+DAAQ,CAACpB,UAAU,CAACT,IAAI,EAAEmC,EAAE,CAAC,CAAC,EAC5Ba,GAAG,IAAI,IAAIC,qCAA6B,CAACjD,IAAI,EAAEmC,EAAE,EAAEa,GAAY,CAAC,EAChEE,OAAO,KAAK;QAAEA;MAAO,CAAE,CAAC,CACzB,EACCC,CAAC,IAAIA,CAAC,CAACD,OAAO,CACf;IACL;IAEA,SAASE,QAAQ,CAACC,QAAgB;MAChC,OAAOxB,2BAAE,CACNyB,YAAY,CAACD,QAAQ,CAAC,EACbL,GAAG,IAAInB,oBAAW,IAAI0B,2BAAmB,CAACP,GAAY,CAAC,CAAC,CAAC;IACvE;IAEA,SAASnC,IAAI,CAACb,IAAY;MACxB,OAAQmC,EAAU,IAAI;QACpB,OAAON,2BAAO,CAACW,WAAW,CAACxC,IAAI,EAAEmC,EAAE,CAAC,CAAC,EACnCP,CAAC,IAAIL,qBAAC,EAAKiC,CAAC,IAAIC,IAAI,CAACC,KAAK,CAACF,CAAC,CAAqB,CAAC,CACnD;MACH,CAAC;IACH;IAEA,SAASxC,MAAM,CAAC4B,KAAY;MAC1B,OAAOf,6BAAS,CAACe,KAAK,CAAC,EAAKX,GAAG,IAAIV,6BAAoBU,GAAG,CAACW,KAAK,CAACF,GAAG,CAAC,CAAC,CAAC;IACzE;IAEA,SAASiB,SAAS,CAACf,KAAY;MAC7B,OAAOf,2BAAO,CAACpB,UAAU,CAACT,IAAI,EAAE4C,KAAK,CAACgB,GAAG,CAAC,CAAC,EACzChC,CAAC,IACCL,uBAAC,EACC,OAAO,EAA2B,GAClCW,CAAC,IAAIuB,IAAI,CAACC,KAAK,CAACxB,CAAC,CAAyB,CAC3C,CACJ;IACH;IAEA,SAASO,UAAU,CAACG,KAAY,EAAEiB,OAA6B;MAC7D,OAAO,kBAAI,EAACJ,IAAI,CAACK,SAAS,CAACD,OAAO,CAAC,EAAExB,UAAU,IAAIC,EAAE,CAACC,aAAa,CAAC9B,UAAU,CAACT,IAAI,EAAE4C,KAAK,CAACgB,GAAG,CAAC,EAAEvB,UAAU,CAAC,CAAC;IAC/G;IAEA,SAAS0B,OAAO,CAACV,QAAgB;MAC/B,OAAOxB,0BAAE,CACNmC,UAAU,CAACX,QAAQ,CAAC,EACZY,MAAM,IAAI,CAACA,MAAM,GAAGpC,gDAAmB,GAAGA,4BAAQ,CAACwB,QAAQ,CAAC,uBAAiB,CAAC;IAC3F;IAEA,SAASb,WAAW,CAACxC,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,SAAS+B,QAAQ,CAACC,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","serialised","fu","writeTextFile","getFilename","writeIndex","key","lockIndex","index","lockDiskIndex","lockKey","lockIndexOnDisk","err","CouldNotAquireDbLockException","release","l","readFile","filePath","readTextFile","ConnectionException","s","JSON","parse","readIndex","doc","content","stringify","tryRead","fileExists","exists","lockFile","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(_ => tsplus_module_1.map(s => JSON.parse(s))(_))(storage.find((0, _shared.getRecordName)(type, id))), parseSDB), ({
29
+ return tsplus_module_3.mapOption(tsplus_module_3.flatMapOption(tsplus_module_2.map(storage.find((0, _shared.getRecordName)(type, id)), _ => tsplus_module_1.map(_, s => JSON.parse(s))), 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_1.fromNullable)(tsplus_module_2.gen(function* ($) {
39
+ return tsplus_module_2.map(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(d => eq(keys, d) ? tsplus_module_2.sync(() => d) : tsplus_module_2.fail("not equals"))(decode(cr.data))));
47
+ const r = yield* $(tsplus_module_2.exit(tsplus_module_2.flatMap(decode(cr.data), d => eq(keys, d) ? tsplus_module_2.sync(() => d) : tsplus_module_2.fail("not equals"))));
48
48
  if (tsplus_module_4.isSuccess(r)) {
49
49
  return r.value;
50
50
  }
51
51
  }
52
52
  return null;
53
- }));
53
+ }), tsplus_module_1.fromNullable);
54
54
  }
55
55
  function store(record, currentVersion) {
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(data => JSON.stringify({
56
+ const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
57
+ const getData = (0, _Function.flow)(encode, _ => tsplus_module_2.map(tsplus_module_2.map(_, JSON.stringify), data => JSON.stringify({
58
58
  version,
59
59
  timestamp: new Date(),
60
60
  data
61
- }))(tsplus_module_2.map(JSON.stringify)(_)));
62
- return tsplus_module_2.map(() => ({
61
+ })));
62
+ return tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), serialised => storage.set((0, _shared.getRecordName)(type, record.id), serialised)), () => ({
63
63
  version,
64
64
  data: record
65
- }))(tsplus_module_2.flatMap(serialised => storage.set((0, _shared.getRecordName)(type, record.id), serialised))(getData(record)));
65
+ }));
66
66
  }
67
67
  };
68
68
  }
@@ -1 +1 @@
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]}
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]}
@@ -16,20 +16,20 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
16
16
  // prev[cur] = 1
17
17
  // return prev
18
18
  // }, {} as Record<string, number>)
19
- const setup = (type, indexes) => tsplus_module_1.flatMap(db => tsplus_module_1.tryPromise(() => db.collection(type).createIndexes(indexes)))(tsplus_module_1.tap(db => tsplus_module_1.tryPromise(() => db.createCollection(type).catch(err => console.warn(err))))(Mongo.db));
19
+ const setup = (type, indexes) => tsplus_module_1.flatMap(tsplus_module_1.tap(Mongo.db, db => tsplus_module_1.tryPromise(() => db.createCollection(type).catch(err => console.warn(err)))), db => tsplus_module_1.tryPromise(() => db.collection(type).createIndexes(indexes)));
20
20
  function createContext() {
21
21
  return (type, encode, decode,
22
22
  // schemaVersion: string,
23
23
  indexes) => {
24
- return tsplus_module_1.map(() => ({
24
+ return tsplus_module_1.map(setup(type, indexes), () => ({
25
25
  find: simpledb.find(find, decode, type),
26
26
  findBy,
27
27
  save: simpledb.storeDirectly(store, type)
28
- }))(setup(type, indexes));
28
+ }));
29
29
  function find(id) {
30
- return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_2.fromNullable)(tsplus_module_1.flatMap(db => tsplus_module_1.tryPromise(() => db.collection(type).findOne({
30
+ return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(Mongo.db, db => tsplus_module_1.tryPromise(() => db.collection(type).findOne({
31
31
  _id: id
32
- })))(Mongo.db)), ({
32
+ }))), tsplus_module_2.fromNullable), ({
33
33
  data,
34
34
  version
35
35
  }) => ({
@@ -38,32 +38,27 @@ function createContext() {
38
38
  }));
39
39
  }
40
40
  function findBy(keys) {
41
- return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_2.fromNullable)(tsplus_module_1.flatMap(db => tsplus_module_1.tryPromise(() => db.collection(type).findOne(keys, {
41
+ return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(Mongo.db, db => tsplus_module_1.tryPromise(() => db.collection(type).findOne(keys, {
42
42
  projection: {
43
43
  _id: 1
44
44
  }
45
- })))(Mongo.db)), ({
45
+ }))), tsplus_module_2.fromNullable), ({
46
46
  _id
47
47
  }) => _id);
48
48
  }
49
49
  function store(record, currentVersion) {
50
50
  return tsplus_module_1.gen(function* ($) {
51
- const version = tsplus_module_2.getOrElse(() => "1")(tsplus_module_2.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
51
+ const version = tsplus_module_2.getOrElse(tsplus_module_2.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
52
52
  const db = yield* $(Mongo.db);
53
53
  const data = yield* $(encode(record));
54
- yield* $(tsplus_module_2.match(() => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.collection(type).insertOne({
54
+ yield* $(tsplus_module_2.match(currentVersion, () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.collection(type).insertOne({
55
55
  _id: record.id,
56
56
  version,
57
57
  timestamp: new Date(),
58
58
  data
59
59
  }, {
60
60
  checkKeys: false // support for keys with `.` and `$`. NOTE: you can write them, read them, but NOT query for them.
61
- })))), currentVersion => tsplus_module_1.flatMap(x => {
62
- if (!x.modifiedCount) {
63
- return tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id));
64
- }
65
- return tsplus_module_3.unit;
66
- })(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({
61
+ })))), currentVersion => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({
67
62
  _id: record.id,
68
63
  version: currentVersion
69
64
  }, {
@@ -72,7 +67,12 @@ function createContext() {
72
67
  data
73
68
  }, {
74
69
  upsert: false
75
- })))))(currentVersion));
70
+ }))), x => {
71
+ if (!x.modifiedCount) {
72
+ return tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id));
73
+ }
74
+ return tsplus_module_3.unit;
75
+ })));
76
76
  return {
77
77
  version,
78
78
  data: record
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.cjs","mappings":"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","names":["setup","type","indexes","tsplus_module_1","db","collection","createIndexes","createCollection","catch","err","console","warn","Mongo","createContext","encode","decode","find","simpledb","findBy","save","storeDirectly","store","id","tsplus_module_3","findOne","_id","data","version","keys","projection","record","currentVersion","$","tsplus_module_2","cv","parseInt","toString","insertOne","timestamp","Date","checkKeys","x","modifiedCount","OptimisticLockException","replaceOne","upsert"],"sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"mongodb.cjs","mappings":"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","names":["setup","type","indexes","tsplus_module_1","db","createCollection","catch","err","console","warn","collection","createIndexes","createContext","encode","decode","find","simpledb","findBy","save","storeDirectly","store","id","tsplus_module_3","findOne","_id","data","version","keys","projection","record","currentVersion","$","tsplus_module_2","cv","parseInt","toString","Mongo","insertOne","timestamp","Date","checkKeys","replaceOne","upsert","x","modifiedCount","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"sourcesContent":[null]}
@@ -20,40 +20,40 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
20
20
  const ttl = 10 * 1000;
21
21
  function createContext() {
22
22
  return (type, encode, decode, schemaVersion, makeIndexKey) => {
23
- const getData = (0, _Function.flow)(encode, _ => tsplus_module_1.map(JSON.stringify)(_));
23
+ const getData = (0, _Function.flow)(encode, _ => tsplus_module_1.map(_, JSON.stringify));
24
24
  return {
25
25
  find: simpledb.find(find, decode, type),
26
26
  findByIndex: getIdx,
27
27
  save: simpledb.store(find, store, lockRedisRecord, type)
28
28
  };
29
29
  function find(id) {
30
- return tsplus_module_1.orDie(tsplus_module_2.flatMapOption(RED.hmgetAll(getKey(id)), v => tsplus_module_1.mapError(e => new _shared.ConnectionException(new Error(e.toString())))(tsplus_module_1.map(({
30
+ return tsplus_module_1.orDie(tsplus_module_2.flatMapOption(RED.hmgetAll(getKey(id)), v => tsplus_module_1.mapError(tsplus_module_1.map((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v), ({
31
31
  data,
32
32
  version
33
33
  }) => ({
34
34
  data: JSON.parse(data),
35
35
  version
36
- }))((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v)))));
36
+ })), e => new _shared.ConnectionException(new Error(e.toString())))));
37
37
  }
38
38
  function store(record, currentVersion) {
39
- const version = tsplus_module_3.getOrElse(() => "1")(tsplus_module_3.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
40
- return tsplus_module_3.match(() => tsplus_module_1.scoped(tsplus_module_1.zipRight(tsplus_module_1.map(() => ({
41
- version,
42
- data: record
43
- }))(tsplus_module_1.orDie(tsplus_module_1.zipRight(setIndex(record))(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
39
+ const version = tsplus_module_3.getOrElse(tsplus_module_3.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
40
+ return tsplus_module_3.match(currentVersion, () => tsplus_module_1.scoped(tsplus_module_1.zipRight(lockIndex(record), tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.zipRight(tsplus_module_1.flatMap(tsplus_module_1.zipRight(tsplus_module_2.zipRightOption(getIndex(record), tsplus_module_1.fail(() => new Error("Combination already exists, abort"))), getData(record))
41
+ // TODO: instead use MULTI & EXEC to make it in one command?
42
+ , data => hmSetRec(getKey(record.id), {
44
43
  version,
45
44
  timestamp: new Date(),
46
45
  data
47
- }))(tsplus_module_1.zipRight(getData(record))(tsplus_module_2.zipRightOption(getIndex(record), tsplus_module_1.fail(() => new Error("Combination already exists, abort"))))
48
- // TODO: instead use MULTI & EXEC to make it in one command?
49
- )))))(lockIndex(record))), () => tsplus_module_1.map(() => ({
46
+ })), setIndex(record))), () => ({
50
47
  version,
51
48
  data: record
52
- }))(tsplus_module_1.orDie(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
49
+ })))), () => tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(getData(record), data => hmSetRec(getKey(record.id), {
53
50
  version,
54
51
  timestamp: new Date(),
55
52
  data
56
- }))(getData(record)))))(currentVersion);
53
+ }))), () => ({
54
+ version,
55
+ data: record
56
+ })));
57
57
  }
58
58
  function getIndex(record) {
59
59
  const index = makeIndexKey(record);
@@ -68,7 +68,7 @@ function createContext() {
68
68
  return lockRedisIdx(index);
69
69
  }
70
70
  function getIdx(index) {
71
- return tsplus_module_1.map(_ => tsplus_module_3.map(i => i)(_))(RED.hget(getIdxKey(index), index.key));
71
+ return tsplus_module_1.map(RED.hget(getIdxKey(index), index.key), _ => tsplus_module_3.map(_, i => i));
72
72
  }
73
73
  function setIdx(index, r) {
74
74
  return RED.hset(getIdxKey(index), index.key, r.id);
@@ -76,20 +76,20 @@ function createContext() {
76
76
  function lockRedisIdx(index) {
77
77
  const lockKey = getIdxLockKey(index);
78
78
  // acquire
79
- return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, lockKey, err),
79
+ return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RED.lock, lock => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl))), err => new _shared.CouldNotAquireDbLockException(type, lockKey, err),
80
80
  // release
81
81
  lock => ({
82
82
  release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
83
- }))(tsplus_module_1.flatMap(lock => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl)))(RED.lock)), l => l.release);
83
+ })), l => l.release);
84
84
  }
85
85
  function lockRedisRecord(id) {
86
86
  // acquire
87
- return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err),
87
+ return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RED.lock, lock => tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl))), err => new _shared.CouldNotAquireDbLockException(type, id, err),
88
88
  // release
89
89
  lock => ({
90
90
  // TODO
91
91
  release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
92
- }))(tsplus_module_1.flatMap(lock => tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl)))(RED.lock)), l => l.release);
92
+ })), l => l.release);
93
93
  }
94
94
  function getKey(id) {
95
95
  return `v${schemaVersion}.${(0, _shared.getRecordName)(type, id)}`;
@@ -106,9 +106,9 @@ function createContext() {
106
106
  };
107
107
  function hmSetRec(key, val) {
108
108
  const enc = RedisSerializedDBRecord.Encoder(val);
109
- return tsplus_module_1.flatMap(client => tsplus_module_1.uninterruptible(tsplus_module_1.async(res => {
109
+ return tsplus_module_1.flatMap(RED.client, client => tsplus_module_1.uninterruptible(tsplus_module_1.async(res => {
110
110
  client.hmset(key, "version", enc.version, "timestamp", enc.timestamp, "data", enc.data, err => err ? res(tsplus_module_1.fail(new _shared.ConnectionException(err))) : res(tsplus_module_1.sync(() => void 0)));
111
- })))(RED.client);
111
+ })));
112
112
  }
113
113
  }
114
114
  class RedisSerializedDBRecord extends MO.Model()({
@@ -1 +1 @@
1
- {"version":3,"file":"redisdb.cjs","mappings":"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","names":["ttl","createContext","type","encode","decode","schemaVersion","makeIndexKey","getData","_","tsplus_module_1","JSON","stringify","find","simpledb","findByIndex","getIdx","save","store","lockRedisRecord","id","tsplus_module_2","hmgetAll","getKey","v","e","ConnectionException","Error","toString","data","version","parse","RedisSerializedDBRecord","Parser","MO","condemnFail","record","currentVersion","tsplus_module_3","cv","parseInt","setIndex","hmSetRec","timestamp","Date","lockIndex","getIndex","index","setIdx","lockRedisIdx","i","RED","hget","getIdxKey","key","r","hset","lockKey","getIdxLockKey","err","CouldNotAquireDbLockException","lock","release","unlock","l","getLockKey","doc","val","enc","Encoder","client","res","hmset","Model","prop","string","date"],"sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"redisdb.cjs","mappings":"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","names":["ttl","createContext","type","encode","decode","schemaVersion","makeIndexKey","getData","_","tsplus_module_1","JSON","stringify","find","simpledb","findByIndex","getIdx","save","store","lockRedisRecord","id","tsplus_module_2","hmgetAll","getKey","v","RedisSerializedDBRecord","Parser","MO","condemnFail","data","version","parse","e","ConnectionException","Error","toString","record","currentVersion","tsplus_module_3","cv","parseInt","hmSetRec","timestamp","Date","setIndex","getIndex","index","setIdx","lockIndex","lockRedisIdx","hget","getIdxKey","key","i","r","RED","hset","lockKey","getIdxLockKey","lock","err","CouldNotAquireDbLockException","release","unlock","l","getLockKey","doc","val","enc","Encoder","client","res","hmset","Model","prop","string","date"],"sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"sourcesContent":[null]}
@@ -41,36 +41,36 @@ function makeLiveRecordCache() {
41
41
  // module tag
42
42
  const RecordCache = tsplus_module_2.Tag();
43
43
  exports.RecordCache = RecordCache;
44
- const LiveRecordCache = tsplus_module_3.toLayer(tsplus_module_1.sync(() => makeLiveRecordCache()), RecordCache);
44
+ const LiveRecordCache = tsplus_module_1.toLayer(tsplus_module_1.sync(() => makeLiveRecordCache()), RecordCache);
45
45
  exports.LiveRecordCache = LiveRecordCache;
46
46
  const getM = type => eff => tsplus_module_1.gen(function* ($) {
47
47
  const {
48
48
  get
49
49
  } = yield* $(tsplus_module_1.service(RecordCache));
50
- return yield* $(tsplus_module_1.flatMap(eff)(get(type)));
50
+ return yield* $(tsplus_module_1.flatMap(get(type), eff));
51
51
  });
52
52
  function find(tryRead, decode, type) {
53
53
  const getCache = getM(type);
54
54
  const read = id => tsplus_module_3.mapOption(tsplus_module_3.tapOption(tsplus_module_3.flatMapOption(tryRead(id), ({
55
55
  data,
56
56
  version
57
- }) => tsplus_module_1.mapBoth(err => new InvalidStateError("DB serialisation Issue", err), data => ({
57
+ }) => tsplus_module_1.mapBoth(decode(data), err => new InvalidStateError("DB serialisation Issue", err), data => ({
58
58
  data,
59
59
  version
60
- }))(decode(data))), r => getCache(c => c.set(id, r))), r => r.data);
61
- return id => getCache(c => tsplus_module_1.orElse(() => read(id))(tsplus_module_3.mapOption(c.find(id), existing => existing.data)));
60
+ }))), r => getCache(c => c.set(id, r))), r => r.data);
61
+ return id => getCache(c => tsplus_module_1.orElse(tsplus_module_3.mapOption(c.find(id), existing => existing.data), () => read(id)));
62
62
  }
63
63
  function storeDirectly(save, type) {
64
64
  const getCache = getM(type);
65
- return record => getCache(c => tsplus_module_1.map(r => r.data)(tsplus_module_1.tap(r => c.set(record.id, r))(tsplus_module_1.flatMap(cv => save(record, cv))(tsplus_module_3.mapOption(c.find(record.id), x => x.version)))));
65
+ return record => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c.find(record.id), x => x.version), cv => save(record, cv)), r => c.set(record.id, r)), r => r.data));
66
66
  }
67
67
  function store(tryRead, save, lock, type) {
68
68
  const getCache = getM(type);
69
- return record => getCache(c => tsplus_module_1.map(r => r.data)(tsplus_module_1.tap(r => c.set(record.id, r))(tsplus_module_1.flatMap(_ => tsplus_module_5.match(() => save(record, tsplus_module_4.none), confirmVersionAndSave(record))(_))(tsplus_module_3.mapOption(c.find(record.id), x => x.version)))));
69
+ return record => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c.find(record.id), x => x.version), _ => tsplus_module_5.match(_, () => save(record, tsplus_module_4.none), confirmVersionAndSave(record))), r => c.set(record.id, r)), r => r.data));
70
70
  function confirmVersionAndSave(record) {
71
- return cv => tsplus_module_1.scoped(tsplus_module_1.zipRight(tsplus_module_1.zipRight(save(record, tsplus_module_5.some(cv)))(tsplus_module_1.tap(({
71
+ return cv => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_1.flatMap(tryRead(record.id), _ => tsplus_module_5.match(_, () => tsplus_module_1.fail(new InvalidStateError("record is gone")), tsplus_module_1.succeed)), ({
72
72
  version
73
- }) => version !== cv ? tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)) : tsplus_module_3.unit)(tsplus_module_1.flatMap(_ => tsplus_module_5.match(() => tsplus_module_1.fail(new InvalidStateError("record is gone")), tsplus_module_1.succeed)(_))(tryRead(record.id)))))(lock(record.id)));
73
+ }) => version !== cv ? tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)) : tsplus_module_3.unit), save(record, tsplus_module_5.some(cv)))));
74
74
  }
75
75
  }
76
76
  //# sourceMappingURL=simpledb.cjs.map