@effect-app/infra 0.7.0 → 0.8.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.
Files changed (284) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/_cjs/errors.cjs +21 -22
  3. package/_cjs/errors.cjs.map +1 -1
  4. package/_cjs/lib/api/authorization.jwt.cjs +1 -1
  5. package/_cjs/{vendor/Cache/Cache/operations/makeWith.cjs → lib/api/codec.cjs} +16 -13
  6. package/_cjs/lib/api/codec.cjs.map +1 -0
  7. package/_cjs/{services/memQueue.cjs → lib/api/express/makeJsonSchema.cjs} +42 -22
  8. package/_cjs/lib/api/express/makeJsonSchema.cjs.map +1 -0
  9. package/_cjs/lib/api/express/makeOpenApiSpecs.cjs +66 -0
  10. package/_cjs/lib/api/express/makeOpenApiSpecs.cjs.map +1 -0
  11. package/_cjs/lib/api/express/schema/jwt.cjs +43 -0
  12. package/_cjs/lib/api/express/schema/jwt.cjs.map +1 -0
  13. package/_cjs/lib/api/express/schema/requestHandler.cjs +166 -0
  14. package/_cjs/lib/api/express/schema/requestHandler.cjs.map +1 -0
  15. package/_cjs/lib/api/express/schema/routing.cjs +121 -0
  16. package/_cjs/lib/api/express/schema/routing.cjs.map +1 -0
  17. package/_cjs/lib/api/routing.cjs +28 -28
  18. package/_cjs/lib/api/routing.cjs.map +1 -1
  19. package/_cjs/lib/api/writeDocs.cjs +4 -4
  20. package/_cjs/lib/api/writeDocs.cjs.map +1 -1
  21. package/_cjs/services/Store/Disk.cjs +1 -1
  22. package/_cjs/services/simpledb/cosmosdb.cjs +98 -0
  23. package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -0
  24. package/_cjs/services/simpledb/diskdb.cjs +118 -0
  25. package/_cjs/services/simpledb/diskdb.cjs.map +1 -0
  26. package/_cjs/services/simpledb/fileutil.cjs +36 -0
  27. package/_cjs/services/simpledb/fileutil.cjs.map +1 -0
  28. package/_cjs/{vendor/Cache/Cache/_internal/CacheState.cjs → services/simpledb/index.cjs} +31 -24
  29. package/_cjs/services/simpledb/index.cjs.map +1 -0
  30. package/_cjs/services/simpledb/memdb.cjs +74 -0
  31. package/_cjs/services/simpledb/memdb.cjs.map +1 -0
  32. package/_cjs/services/simpledb/mongodb.cjs +86 -0
  33. package/_cjs/services/simpledb/mongodb.cjs.map +1 -0
  34. package/_cjs/services/simpledb/redisdb.cjs +120 -0
  35. package/_cjs/services/simpledb/redisdb.cjs.map +1 -0
  36. package/_cjs/services/simpledb/shared.cjs +80 -0
  37. package/_cjs/services/simpledb/shared.cjs.map +1 -0
  38. package/_cjs/services/simpledb/simpledb.cjs +77 -0
  39. package/_cjs/services/simpledb/simpledb.cjs.map +1 -0
  40. package/_src/_global.ext.ts +1 -1
  41. package/_src/errors.ts +12 -3
  42. package/_src/lib/api/app.ts.bak +125 -0
  43. package/_src/lib/api/authorization.jwt.ts +1 -1
  44. package/_src/lib/api/codec.ts +27 -0
  45. package/_src/lib/api/errors.ts.bak +20 -0
  46. package/_src/lib/api/express/makeJsonSchema.ts +49 -0
  47. package/_src/lib/api/express/makeOpenApiSpecs.ts +60 -0
  48. package/_src/lib/api/express/routing.ts.bak +460 -0
  49. package/_src/lib/api/express/schema/jwt.ts +38 -0
  50. package/_src/lib/api/express/schema/requestHandler.ts +360 -0
  51. package/_src/lib/api/express/schema/routing.ts +202 -0
  52. package/_src/lib/api/routing.ts +5 -10
  53. package/_src/lib/api/writeDocs.ts +4 -5
  54. package/_src/services/Store/Disk.ts +1 -1
  55. package/_src/services/simpledb/cosmosdb.ts +134 -0
  56. package/_src/services/simpledb/diskdb.ts +158 -0
  57. package/_src/services/simpledb/fileutil.ts +28 -0
  58. package/_src/services/simpledb/index.ts +6 -0
  59. package/_src/services/simpledb/memdb.ts +79 -0
  60. package/_src/services/simpledb/mongodb.ts +99 -0
  61. package/_src/services/simpledb/redisdb.ts +182 -0
  62. package/_src/services/simpledb/shared.ts +117 -0
  63. package/_src/services/simpledb/simpledb.ts +117 -0
  64. package/dist/_global.ext.d.ts +1 -1
  65. package/dist/_global.ext.d.ts.map +1 -1
  66. package/dist/errors.d.ts +11 -2
  67. package/dist/errors.d.ts.map +1 -1
  68. package/dist/errors.js +17 -3
  69. package/dist/lib/api/authorization.jwt.d.ts +1 -1
  70. package/dist/lib/api/authorization.jwt.d.ts.map +1 -1
  71. package/dist/lib/api/authorization.jwt.js +2 -2
  72. package/dist/lib/api/codec.d.ts +7 -0
  73. package/dist/lib/api/codec.d.ts.map +1 -0
  74. package/dist/lib/api/codec.js +19 -0
  75. package/dist/lib/api/express/makeJsonSchema.d.ts +30 -0
  76. package/dist/lib/api/express/makeJsonSchema.d.ts.map +1 -0
  77. package/dist/lib/api/express/makeJsonSchema.js +40 -0
  78. package/dist/lib/api/express/makeOpenApiSpecs.d.ts +55 -0
  79. package/dist/lib/api/express/makeOpenApiSpecs.d.ts.map +1 -0
  80. package/dist/lib/api/express/makeOpenApiSpecs.js +56 -0
  81. package/dist/lib/api/express/schema/jwt.d.ts +5 -0
  82. package/dist/lib/api/express/schema/jwt.d.ts.map +1 -0
  83. package/dist/lib/api/express/schema/jwt.js +32 -0
  84. package/dist/lib/api/express/schema/requestHandler.d.ts +71 -0
  85. package/dist/lib/api/express/schema/requestHandler.d.ts.map +1 -0
  86. package/dist/lib/api/express/schema/requestHandler.js +140 -0
  87. package/dist/lib/api/express/schema/routing.d.ts +45 -0
  88. package/dist/lib/api/express/schema/routing.d.ts.map +1 -0
  89. package/dist/lib/api/express/schema/routing.js +95 -0
  90. package/dist/lib/api/routing.d.ts +4 -4
  91. package/dist/lib/api/routing.d.ts.map +1 -1
  92. package/dist/lib/api/routing.js +29 -28
  93. package/dist/lib/api/writeDocs.d.ts +1 -1
  94. package/dist/lib/api/writeDocs.d.ts.map +1 -1
  95. package/dist/lib/api/writeDocs.js +5 -5
  96. package/dist/services/Store/Disk.js +2 -2
  97. package/dist/services/simpledb/cosmosdb.d.ts +13 -0
  98. package/dist/services/simpledb/cosmosdb.d.ts.map +1 -0
  99. package/dist/services/simpledb/cosmosdb.js +88 -0
  100. package/dist/services/simpledb/diskdb.d.ts +12 -0
  101. package/dist/services/simpledb/diskdb.d.ts.map +1 -0
  102. package/dist/services/simpledb/diskdb.js +96 -0
  103. package/dist/services/simpledb/fileutil.d.ts +7 -0
  104. package/dist/services/simpledb/fileutil.d.ts.map +1 -0
  105. package/dist/services/simpledb/fileutil.js +25 -0
  106. package/dist/services/simpledb/index.d.ts +7 -0
  107. package/dist/services/simpledb/index.d.ts.map +1 -0
  108. package/dist/services/simpledb/index.js +7 -0
  109. package/dist/services/simpledb/memdb.d.ts +12 -0
  110. package/dist/services/simpledb/memdb.d.ts.map +1 -0
  111. package/dist/services/simpledb/memdb.js +55 -0
  112. package/dist/services/simpledb/mongodb.d.ts +13 -0
  113. package/dist/services/simpledb/mongodb.d.ts.map +1 -0
  114. package/dist/services/simpledb/mongodb.js +55 -0
  115. package/dist/services/simpledb/redisdb.d.ts +25 -0
  116. package/dist/services/simpledb/redisdb.d.ts.map +1 -0
  117. package/dist/services/simpledb/redisdb.js +105 -0
  118. package/dist/services/simpledb/shared.d.ts +63 -0
  119. package/dist/services/simpledb/shared.d.ts.map +1 -0
  120. package/dist/services/simpledb/shared.js +65 -0
  121. package/dist/services/simpledb/simpledb.d.ts +23 -0
  122. package/dist/services/simpledb/simpledb.d.ts.map +1 -0
  123. package/dist/services/simpledb/simpledb.js +56 -0
  124. package/package.json +126 -238
  125. package/_cjs/ext.cjs +0 -4
  126. package/_cjs/ext.cjs.map +0 -1
  127. package/_cjs/lib/fileUtil.cjs +0 -36
  128. package/_cjs/lib/fileUtil.cjs.map +0 -1
  129. package/_cjs/services/CUPS/service.cjs +0 -15
  130. package/_cjs/services/CUPS/service.cjs.map +0 -1
  131. package/_cjs/services/CUPS.cjs +0 -113
  132. package/_cjs/services/CUPS.cjs.map +0 -1
  133. package/_cjs/services/Cache.cjs +0 -39
  134. package/_cjs/services/Cache.cjs.map +0 -1
  135. package/_cjs/services/ServiceBus.cjs +0 -69
  136. package/_cjs/services/ServiceBus.cjs.map +0 -1
  137. package/_cjs/services/memQueue.cjs.map +0 -1
  138. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs +0 -14
  139. package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs.map +0 -1
  140. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs +0 -29
  141. package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs.map +0 -1
  142. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs +0 -32
  143. package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs.map +0 -1
  144. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs +0 -266
  145. package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs.map +0 -1
  146. package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs.map +0 -1
  147. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs +0 -67
  148. package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs.map +0 -1
  149. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs +0 -44
  150. package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs.map +0 -1
  151. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs +0 -33
  152. package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs.map +0 -1
  153. package/_cjs/vendor/Cache/Cache/definition.cjs +0 -13
  154. package/_cjs/vendor/Cache/Cache/definition.cjs.map +0 -1
  155. package/_cjs/vendor/Cache/Cache/operations/make.cjs +0 -20
  156. package/_cjs/vendor/Cache/Cache/operations/make.cjs.map +0 -1
  157. package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs.map +0 -1
  158. package/_cjs/vendor/Cache/Cache/operations.cjs +0 -28
  159. package/_cjs/vendor/Cache/Cache/operations.cjs.map +0 -1
  160. package/_cjs/vendor/Cache/Cache.cjs +0 -28
  161. package/_cjs/vendor/Cache/Cache.cjs.map +0 -1
  162. package/_cjs/vendor/Cache/CacheStats/definition.cjs +0 -13
  163. package/_cjs/vendor/Cache/CacheStats/definition.cjs.map +0 -1
  164. package/_cjs/vendor/Cache/CacheStats.cjs +0 -17
  165. package/_cjs/vendor/Cache/CacheStats.cjs.map +0 -1
  166. package/_cjs/vendor/Cache/EntryStats/definition.cjs +0 -11
  167. package/_cjs/vendor/Cache/EntryStats/definition.cjs.map +0 -1
  168. package/_cjs/vendor/Cache/EntryStats.cjs +0 -17
  169. package/_cjs/vendor/Cache/EntryStats.cjs.map +0 -1
  170. package/_cjs/vendor/Cache/Lookup/definition.cjs +0 -6
  171. package/_cjs/vendor/Cache/Lookup/definition.cjs.map +0 -1
  172. package/_cjs/vendor/Cache/Lookup.cjs +0 -17
  173. package/_cjs/vendor/Cache/Lookup.cjs.map +0 -1
  174. package/_cjs/vendor/Cache/index.cjs +0 -17
  175. package/_cjs/vendor/Cache/index.cjs.map +0 -1
  176. package/_src/ext.ts +0 -1
  177. package/_src/lib/fileUtil.ts +0 -56
  178. package/_src/services/CUPS/service.ts +0 -16
  179. package/_src/services/CUPS.ts +0 -105
  180. package/_src/services/Cache.ts +0 -45
  181. package/_src/services/ServiceBus.ts +0 -111
  182. package/_src/services/memQueue.ts +0 -30
  183. package/_src/vendor/Cache/Cache/_internal/AtomicBoolean.ts +0 -7
  184. package/_src/vendor/Cache/Cache/_internal/AtomicNumber.ts +0 -28
  185. package/_src/vendor/Cache/Cache/_internal/AtomicReference.ts +0 -30
  186. package/_src/vendor/Cache/Cache/_internal/CacheInternal.ts +0 -293
  187. package/_src/vendor/Cache/Cache/_internal/CacheState.ts +0 -56
  188. package/_src/vendor/Cache/Cache/_internal/KeySet.ts +0 -58
  189. package/_src/vendor/Cache/Cache/_internal/MapKey.ts +0 -43
  190. package/_src/vendor/Cache/Cache/_internal/MapValue.ts +0 -39
  191. package/_src/vendor/Cache/Cache/definition.ts +0 -112
  192. package/_src/vendor/Cache/Cache/operations/make.ts +0 -17
  193. package/_src/vendor/Cache/Cache/operations/makeWith.ts +0 -32
  194. package/_src/vendor/Cache/Cache/operations.ts +0 -4
  195. package/_src/vendor/Cache/Cache.ts +0 -4
  196. package/_src/vendor/Cache/CacheStats/definition.ts +0 -23
  197. package/_src/vendor/Cache/CacheStats.ts +0 -3
  198. package/_src/vendor/Cache/EntryStats/definition.ts +0 -19
  199. package/_src/vendor/Cache/EntryStats.ts +0 -3
  200. package/_src/vendor/Cache/Lookup/definition.ts +0 -15
  201. package/_src/vendor/Cache/Lookup.ts +0 -3
  202. package/_src/vendor/Cache/global.ts.bak +0 -23
  203. package/_src/vendor/Cache/index.ts +0 -4
  204. package/dist/ext.d.ts +0 -2
  205. package/dist/ext.d.ts.map +0 -1
  206. package/dist/ext.js +0 -2
  207. package/dist/lib/fileUtil.d.ts +0 -22
  208. package/dist/lib/fileUtil.d.ts.map +0 -1
  209. package/dist/lib/fileUtil.js +0 -23
  210. package/dist/services/CUPS/service.d.ts +0 -19
  211. package/dist/services/CUPS/service.d.ts.map +0 -1
  212. package/dist/services/CUPS/service.js +0 -5
  213. package/dist/services/CUPS.d.ts +0 -10
  214. package/dist/services/CUPS.d.ts.map +0 -1
  215. package/dist/services/CUPS.js +0 -89
  216. package/dist/services/Cache.d.ts +0 -28
  217. package/dist/services/Cache.d.ts.map +0 -1
  218. package/dist/services/Cache.js +0 -28
  219. package/dist/services/ServiceBus.d.ts +0 -26
  220. package/dist/services/ServiceBus.d.ts.map +0 -1
  221. package/dist/services/ServiceBus.js +0 -53
  222. package/dist/services/memQueue.d.ts +0 -18
  223. package/dist/services/memQueue.d.ts.map +0 -1
  224. package/dist/services/memQueue.js +0 -24
  225. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts +0 -5
  226. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts.map +0 -1
  227. package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.js +0 -7
  228. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts +0 -8
  229. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts.map +0 -1
  230. package/dist/vendor/Cache/Cache/_internal/AtomicNumber.js +0 -22
  231. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts +0 -10
  232. package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts.map +0 -1
  233. package/dist/vendor/Cache/Cache/_internal/AtomicReference.js +0 -25
  234. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts +0 -51
  235. package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts.map +0 -1
  236. package/dist/vendor/Cache/Cache/_internal/CacheInternal.js +0 -253
  237. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts +0 -33
  238. package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts.map +0 -1
  239. package/dist/vendor/Cache/Cache/_internal/CacheState.js +0 -21
  240. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts +0 -20
  241. package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts.map +0 -1
  242. package/dist/vendor/Cache/Cache/_internal/KeySet.js +0 -61
  243. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts +0 -24
  244. package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts.map +0 -1
  245. package/dist/vendor/Cache/Cache/_internal/MapKey.js +0 -37
  246. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts +0 -32
  247. package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts.map +0 -1
  248. package/dist/vendor/Cache/Cache/_internal/MapValue.js +0 -24
  249. package/dist/vendor/Cache/Cache/definition.d.ts +0 -100
  250. package/dist/vendor/Cache/Cache/definition.d.ts.map +0 -1
  251. package/dist/vendor/Cache/Cache/definition.js +0 -5
  252. package/dist/vendor/Cache/Cache/operations/make.d.ts +0 -12
  253. package/dist/vendor/Cache/Cache/operations/make.d.ts.map +0 -1
  254. package/dist/vendor/Cache/Cache/operations/make.js +0 -12
  255. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts +0 -14
  256. package/dist/vendor/Cache/Cache/operations/makeWith.d.ts.map +0 -1
  257. package/dist/vendor/Cache/Cache/operations/makeWith.js +0 -15
  258. package/dist/vendor/Cache/Cache/operations.d.ts +0 -3
  259. package/dist/vendor/Cache/Cache/operations.d.ts.map +0 -1
  260. package/dist/vendor/Cache/Cache/operations.js +0 -4
  261. package/dist/vendor/Cache/Cache.d.ts +0 -3
  262. package/dist/vendor/Cache/Cache.d.ts.map +0 -1
  263. package/dist/vendor/Cache/Cache.js +0 -4
  264. package/dist/vendor/Cache/CacheStats/definition.d.ts +0 -19
  265. package/dist/vendor/Cache/CacheStats/definition.d.ts.map +0 -1
  266. package/dist/vendor/Cache/CacheStats/definition.js +0 -6
  267. package/dist/vendor/Cache/CacheStats.d.ts +0 -2
  268. package/dist/vendor/Cache/CacheStats.d.ts.map +0 -1
  269. package/dist/vendor/Cache/CacheStats.js +0 -3
  270. package/dist/vendor/Cache/EntryStats/definition.d.ts +0 -17
  271. package/dist/vendor/Cache/EntryStats/definition.d.ts.map +0 -1
  272. package/dist/vendor/Cache/EntryStats/definition.js +0 -4
  273. package/dist/vendor/Cache/EntryStats.d.ts +0 -2
  274. package/dist/vendor/Cache/EntryStats.d.ts.map +0 -1
  275. package/dist/vendor/Cache/EntryStats.js +0 -3
  276. package/dist/vendor/Cache/Lookup/definition.d.ts +0 -17
  277. package/dist/vendor/Cache/Lookup/definition.d.ts.map +0 -1
  278. package/dist/vendor/Cache/Lookup/definition.js +0 -2
  279. package/dist/vendor/Cache/Lookup.d.ts +0 -2
  280. package/dist/vendor/Cache/Lookup.d.ts.map +0 -1
  281. package/dist/vendor/Cache/Lookup.js +0 -3
  282. package/dist/vendor/Cache/index.d.ts +0 -5
  283. package/dist/vendor/Cache/index.d.ts.map +0 -1
  284. package/dist/vendor/Cache/index.js +0 -5
@@ -0,0 +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","_","tracer_1","data","timestamp","Date","idx","x","id","tsplus_module_2","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]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fileExists = fileExists;
7
+ exports.readTextFile = readTextFile;
8
+ exports.writeTextFile = writeTextFile;
9
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
10
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
11
+ var _fs = _interopRequireDefault(require("fs"));
12
+ var _util = require("util");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const fileName_1 = "packages/infra/_src/services/simpledb/fileutil.ts";
17
+ const readFile = (0, _util.promisify)(_fs.default.readFile);
18
+ const writeFile = (0, _util.promisify)(_fs.default.writeFile);
19
+ const rename = (0, _util.promisify)(_fs.default.rename);
20
+ const exists = (0, _util.promisify)(_fs.default.exists);
21
+ // const mkdir = promisify(fs.mkdir)
22
+ // const unlinkFile = promisify(fs.unlink)
23
+ /**
24
+ * Safe write file to .tmp and then rename
25
+ */
26
+ function writeTextFile(fileName, content) {
27
+ const tmp = fileName + ".tmp";
28
+ return tsplus_module_1.orDie(tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":18:14")(tsplus_module_1.tryPromise(() => rename(tmp, fileName))))(tracer_1.withCallTrace(fileName_1 + ":17:12")(tsplus_module_1.tryPromise(() => writeFile(tmp, content, "utf-8")))));
29
+ }
30
+ function fileExists(fileName) {
31
+ return tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":23:17")(tsplus_module_1.tryPromise(() => exists(fileName))));
32
+ }
33
+ function readTextFile(fileName) {
34
+ return tracer_1.withCallTrace(fileName_1 + ":27:17")(tsplus_module_1.tryPromise(() => readFile(fileName, "utf-8")));
35
+ }
36
+ //# sourceMappingURL=fileutil.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileutil.cjs","mappings":";;;;;;;;;;AAAA;AACA;AAAgC;AAAA;AAAA;;AAEhC,MAAMA,QAAQ,GAAG,mBAAS,EAACC,WAAE,CAACD,QAAQ,CAAC;AACvC,MAAME,SAAS,GAAG,mBAAS,EAACD,WAAE,CAACC,SAAS,CAAC;AACzC,MAAMC,MAAM,GAAG,mBAAS,EAACF,WAAE,CAACE,MAAM,CAAC;AACnC,MAAMC,MAAM,GAAG,mBAAS,EAACH,WAAE,CAACG,MAAM,CAAC;AACnC;AACA;AAEA;;;AAGM,SAAUC,aAAa,CAACC,QAAgB,EAAEC,OAAe;EAC7D,MAAMC,GAAG,GAAGF,QAAQ,GAAG,MAAM;EAC7B,6BAAOG,uEAEHA,2BAAkB,MAAMN,MAAM,CAACK,GAAG,EAAEF,QAAQ,CAAC,CAAC,iDADhDG,2BAAkB,MAAMP,SAAS,CAACM,GAAG,EAAED,OAAO,EAAE,OAAO,CAAC,CAAC,GAE1D;AACH;AAEM,SAAUG,UAAU,CAACJ,QAAgB;EACzC,2EAAOG,2BAAkB,MAAML,MAAM,CAACE,QAAQ,CAAC,CAAC;AAClD;AAEM,SAAUK,YAAY,CAACL,QAAgB;EAC3C,qDAAOG,2BAAkB,MAAMT,QAAQ,CAACM,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7D","names":["readFile","fs","writeFile","rename","exists","writeTextFile","fileName","content","tmp","tsplus_module_1","fileExists","readTextFile"],"sourceRoot":"","sources":["../../../_src/services/simpledb/fileutil.ts"],"sourcesContent":[null]}
@@ -3,29 +3,36 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CacheState = void 0;
7
- exports.initial = initial;
8
- var tsplus_module_1 = _interopRequireWildcard(require("@fp-ts/data/MutableHashMap"));
9
- var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/MutableQueue"));
10
- var _AtomicBoolean = require("./AtomicBoolean.cjs");
11
- var _KeySet = require("./KeySet.cjs");
6
+ var _exportNames = {
7
+ disk: true,
8
+ mem: true,
9
+ mongo: true,
10
+ redis: true,
11
+ SDB: true
12
+ };
13
+ exports.redis = exports.mongo = exports.mem = exports.disk = exports.SDB = void 0;
14
+ var _disk = _interopRequireWildcard(require("./diskdb.cjs"));
15
+ exports.disk = _disk;
16
+ var _mem = _interopRequireWildcard(require("./memdb.cjs"));
17
+ exports.mem = _mem;
18
+ var _mongo = _interopRequireWildcard(require("./mongodb.cjs"));
19
+ exports.mongo = _mongo;
20
+ var _redis = _interopRequireWildcard(require("./redisdb.cjs"));
21
+ exports.redis = _redis;
22
+ var _shared = require("./shared.cjs");
23
+ Object.keys(_shared).forEach(function (key) {
24
+ if (key === "default" || key === "__esModule") return;
25
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
+ if (key in exports && exports[key] === _shared[key]) return;
27
+ Object.defineProperty(exports, key, {
28
+ enumerable: true,
29
+ get: function () {
30
+ return _shared[key];
31
+ }
32
+ });
33
+ });
34
+ var _SDB = _interopRequireWildcard(require("./simpledb.cjs"));
35
+ exports.SDB = _SDB;
12
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
37
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- const CacheState = (map, keys, accesses, updating, hits, misses) => ({
15
- map,
16
- keys,
17
- accesses,
18
- updating,
19
- hits,
20
- misses
21
- });
22
- /**
23
- * Constructs an initial cache state.
24
- *
25
- * @tsplus static effect/cache/Cache/CacheState.Ops initial
26
- */
27
- exports.CacheState = CacheState;
28
- function initial() {
29
- return CacheState(tsplus_module_1.empty(), new _KeySet.KeySet(), tsplus_module_2.unbounded(), new _AtomicBoolean.AtomicBoolean(false), 0, 0);
30
- }
31
- //# sourceMappingURL=CacheState.cjs.map
38
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;AAIA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAA2B;AAAA;AAAA;AAAA","names":[],"sourceRoot":"","sources":["../../../_src/services/simpledb/index.ts"],"sourcesContent":[null]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createContext = createContext;
7
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
8
+ var tsplus_module_1 = _interopRequireWildcard(require("@fp-ts/data/Option"));
9
+ var tsplus_module_2 = _interopRequireWildcard(require("@effect/io/Effect"));
10
+ var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
11
+ var tsplus_module_4 = _interopRequireWildcard(require("@effect/io/Exit"));
12
+ var _Function = require("@effect-app/core/Function");
13
+ var MO = _interopRequireWildcard(require("@effect-app/schema"));
14
+ var _shared = require("./shared.cjs");
15
+ var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ const fileName_1 = "packages/infra/_src/services/simpledb/memdb.ts";
19
+ // When we are in-process, we want to share the same Storage
20
+ // Do not try this at home.
21
+ const storage = (0, _shared.makeMap)();
22
+ const parseSDB = MO.condemnFail(_shared.SerializedDBRecord.Parser);
23
+ function createContext() {
24
+ return (type, encode, decode) => {
25
+ return {
26
+ find: simpledb.find(find, decode, type),
27
+ findBy,
28
+ save: simpledb.store(find, store, bogusLock, type)
29
+ };
30
+ function find(id) {
31
+ return tracer_1.withCallTrace(fileName_1 + ":33:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":32:10")(tsplus_module_3.flatMapOpt(tracer_1.withCallTrace(fileName_1 + ":31:10")(tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_)))(storage.find((0, _shared.getRecordName)(type, id))), parseSDB)), ({
32
+ data,
33
+ version
34
+ }) => ({
35
+ data: JSON.parse(data),
36
+ version
37
+ })));
38
+ }
39
+ function findBy(keys, eq) {
40
+ // Naive implementation, fine for in memory testing purposes.
41
+ return tracer_1.withCallTrace(fileName_1 + ":58:10")(tsplus_module_2.map(tsplus_module_1.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":41:21")(tsplus_module_2.gen(function* ($) {
42
+ for (const [, value] of storage) {
43
+ const sdb_ = JSON.parse(value);
44
+ const sdb = yield* $(parseSDB(sdb_));
45
+ const cr = {
46
+ data: JSON.parse(sdb.data),
47
+ version: sdb.version
48
+ };
49
+ const r = yield* $(tsplus_module_2.exit(tracer_1.withCallTrace(fileName_1 + ":47:29")(tsplus_module_2.flatMap(d => eq.equals(keys, d) ? tracer_1.withCallTrace(fileName_1 + ":49:19")(tsplus_module_2.sync(() => d)) : tracer_1.withCallTrace(fileName_1 + ":50:26")(tsplus_module_2.fail("not equals"))))(decode(cr.data))));
50
+ if (tsplus_module_4.isSuccess(r)) {
51
+ return r.value;
52
+ }
53
+ }
54
+ return null;
55
+ })));
56
+ }
57
+ function store(record, currentVersion) {
58
+ const version = tsplus_module_1.getOrElse(() => "1")(tsplus_module_1.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
59
+ const getData = (0, _Function.flow)(encode, _ => tracer_1.withCallTrace(fileName_1 + ":68:36")(tsplus_module_2.map(data => JSON.stringify({
60
+ version,
61
+ timestamp: new Date(),
62
+ data
63
+ })))(tracer_1.withCallTrace(fileName_1 + ":68:16")(tsplus_module_2.map(JSON.stringify))(_)));
64
+ return tracer_1.withCallTrace(fileName_1 + ":72:10")(tsplus_module_2.map(() => ({
65
+ version,
66
+ data: record
67
+ })))(tracer_1.withCallTrace(fileName_1 + ":71:10")(tsplus_module_2.flatMap(serialised => storage.set((0, _shared.getRecordName)(type, record.id), serialised)))(getData(record)));
68
+ }
69
+ };
70
+ }
71
+ function bogusLock() {
72
+ return tracer_1.withCallTrace(fileName_1 + ":78:22")(tsplus_module_2.acquireRelease(tsplus_module_3.unit, () => tsplus_module_3.unit));
73
+ }
74
+ //# sourceMappingURL=memdb.cjs.map
@@ -0,0 +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","tracer_1","$","value","sdb_","sdb","cr","r","d","equals","tsplus_module_2","tsplus_module_4","record","currentVersion","cv","parseInt","toString","getData","stringify","timestamp","Date","serialised","set"],"sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"sourcesContent":[null]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createContext = createContext;
7
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
8
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
9
+ var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/Option"));
10
+ var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
11
+ var Mongo = _interopRequireWildcard(require("@effect-app/infra-adapters/mongo-client"));
12
+ var _shared = require("./shared.cjs");
13
+ var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ const fileName_1 = "packages/infra/_src/services/simpledb/mongodb.ts";
17
+ // const makeFromIndexKeys = (indexKeys: string[], unique: boolean) => indexKeys.reduce((prev, cur) => {
18
+ // prev[cur] = 1
19
+ // return prev
20
+ // }, {} as Record<string, number>)
21
+ const setup = (type, indexes) => tracer_1.withCallTrace(fileName_1 + ":17:6")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":17:27")(tsplus_module_1.tryPromise(() => db.collection(type).createIndexes(indexes)))))(tracer_1.withCallTrace(fileName_1 + ":16:6")(tsplus_module_1.tap(db => tracer_1.withCallTrace(fileName_1 + ":16:23")(tsplus_module_1.tryPromise(() => db.createCollection(type).catch(err => console.warn(err))))))(Mongo.db));
22
+ function createContext() {
23
+ return (type, encode, decode,
24
+ // schemaVersion: string,
25
+ indexes) => {
26
+ return tracer_1.withCallTrace(fileName_1 + ":27:33")(tsplus_module_1.map(() => ({
27
+ find: simpledb.find(find, decode, type),
28
+ findBy,
29
+ save: simpledb.storeDirectly(store, type)
30
+ })))(setup(type, indexes));
31
+ function find(id) {
32
+ return tracer_1.withCallTrace(fileName_1 + ":43:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":42:10")(tsplus_module_1.map(tsplus_module_2.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":35:10")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":36:18")(tsplus_module_1.tryPromise(() => db.collection(type).findOne({
33
+ _id: id
34
+ })))))(Mongo.db)), ({
35
+ data,
36
+ version
37
+ }) => ({
38
+ version,
39
+ data
40
+ })));
41
+ }
42
+ function findBy(keys) {
43
+ return tracer_1.withCallTrace(fileName_1 + ":52:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":51:10")(tsplus_module_1.map(tsplus_module_2.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":48:10")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":49:18")(tsplus_module_1.tryPromise(() => db.collection(type).findOne(keys, {
44
+ projection: {
45
+ _id: 1
46
+ }
47
+ })))))(Mongo.db)), ({
48
+ _id
49
+ }) => _id));
50
+ }
51
+ function store(record, currentVersion) {
52
+ return tracer_1.withCallTrace(fileName_1 + ":56:21")(tsplus_module_1.gen(function* ($) {
53
+ const version = tsplus_module_2.getOrElse(() => "1")(tsplus_module_2.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
54
+ const db = yield* $(Mongo.db);
55
+ const data = yield* $(encode(record));
56
+ yield* $(tsplus_module_2.match(() => tsplus_module_1.orDie(tsplus_module_1.asUnit(tracer_1.withCallTrace(fileName_1 + ":66:22")(tsplus_module_1.tryPromise(() => db.collection(type).insertOne({
57
+ _id: record.id,
58
+ version,
59
+ timestamp: new Date(),
60
+ data
61
+ }, {
62
+ checkKeys: false // support for keys with `.` and `$`. NOTE: you can write them, read them, but NOT query for them.
63
+ }))))), currentVersion => tracer_1.withCallTrace(fileName_1 + ":87:23")(tsplus_module_1.flatMap(x => {
64
+ if (!x.modifiedCount) {
65
+ return tracer_1.withCallTrace(fileName_1 + ":89:33")(tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)));
66
+ }
67
+ return tsplus_module_3.unit;
68
+ }))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":77:22")(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({
69
+ _id: record.id,
70
+ version: currentVersion
71
+ }, {
72
+ version,
73
+ timestamp: new Date(),
74
+ data
75
+ }, {
76
+ upsert: false
77
+ }))))))(currentVersion));
78
+ return {
79
+ version,
80
+ data: record
81
+ };
82
+ }));
83
+ }
84
+ };
85
+ }
86
+ //# sourceMappingURL=mongodb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.cjs","mappings":"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","names":["setup","type","indexes","tracer_1","db","tsplus_module_1","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]}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RedisSerializedDBRecord = void 0;
7
+ exports.createContext = createContext;
8
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
9
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
10
+ var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/Effect"));
11
+ var tsplus_module_3 = _interopRequireWildcard(require("@fp-ts/data/Option"));
12
+ var _Function = require("@effect-app/core/Function");
13
+ var MO = _interopRequireWildcard(require("@effect-app/schema"));
14
+ var RED = _interopRequireWildcard(require("@effect-app/infra-adapters/redis-client"));
15
+ var _shared = require("./shared.cjs");
16
+ var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ const fileName_1 = "packages/infra/_src/services/simpledb/redisdb.ts";
20
+ const ttl = 10 * 1000;
21
+ function createContext() {
22
+ return (type, encode, decode, schemaVersion, makeIndexKey) => {
23
+ const getData = (0, _Function.flow)(encode, _ => tracer_1.withCallTrace(fileName_1 + ":22:41")(tsplus_module_1.map(JSON.stringify))(_));
24
+ return {
25
+ find: simpledb.find(find, decode, type),
26
+ findByIndex: getIdx,
27
+ save: simpledb.store(find, store, lockRedisRecord, type)
28
+ };
29
+ function find(id) {
30
+ return tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":30:39")(tsplus_module_2.flatMapOpt(RED.hmgetAll(getKey(id)), v => tracer_1.withCallTrace(fileName_1 + ":39:12")(tsplus_module_1.mapError(e => new _shared.ConnectionException(new Error(e.toString()))))(tracer_1.withCallTrace(fileName_1 + ":35:12")(tsplus_module_1.map(({
31
+ data,
32
+ version
33
+ }) => ({
34
+ data: JSON.parse(data),
35
+ version
36
+ })))((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v))))));
37
+ }
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(tracer_1.withCallTrace(fileName_1 + ":48:29")(tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":63:22")(tsplus_module_1.map(() => ({
41
+ version,
42
+ data: record
43
+ })))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":62:16")(tsplus_module_1.zipRight(setIndex(record)))(tracer_1.withCallTrace(fileName_1 + ":55:16")(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
44
+ version,
45
+ timestamp: new Date(),
46
+ data
47
+ })))(tracer_1.withCallTrace(fileName_1 + ":53:16")(tsplus_module_1.zipRight(getData(record)))(tracer_1.withCallTrace(fileName_1 + ":50:16")(tsplus_module_2.zipRightOpt(getIndex(record), tracer_1.withCallTrace(fileName_1 + ":51:24")(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))), () => tracer_1.withCallTrace(fileName_1 + ":74:20")(tsplus_module_1.map(() => ({
50
+ version,
51
+ data: record
52
+ })))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":67:14")(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
53
+ version,
54
+ timestamp: new Date(),
55
+ data
56
+ })))(getData(record)))))(currentVersion);
57
+ }
58
+ function getIndex(record) {
59
+ const index = makeIndexKey(record);
60
+ return getIdx(index);
61
+ }
62
+ function setIndex(record) {
63
+ const index = makeIndexKey(record);
64
+ return setIdx(index, record);
65
+ }
66
+ function lockIndex(record) {
67
+ const index = makeIndexKey(record);
68
+ return lockRedisIdx(index);
69
+ }
70
+ function getIdx(index) {
71
+ return tracer_1.withCallTrace(fileName_1 + ":94:52")(tsplus_module_1.map(_ => tsplus_module_3.map(i => i)(_)))(RED.hget(getIdxKey(index), index.key));
72
+ }
73
+ function setIdx(index, r) {
74
+ return RED.hset(getIdxKey(index), index.key, r.id);
75
+ }
76
+ function lockRedisIdx(index) {
77
+ const lockKey = getIdxLockKey(index);
78
+ // acquire
79
+ return tracer_1.withCallTrace(fileName_1 + ":113:11")(tsplus_module_1.acquireRelease(tracer_1.withCallTrace(fileName_1 + ":106:10")(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, lockKey, err),
80
+ // release
81
+ lock => ({
82
+ release: tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":110:29")(tsplus_module_1.tryPromise(() => lock.unlock())))
83
+ })))(tracer_1.withCallTrace(fileName_1 + ":105:10")(tsplus_module_1.flatMap(lock => tracer_1.withCallTrace(fileName_1 + ":105:33")(tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl)))))(RED.lock)), l => l.release));
84
+ }
85
+ function lockRedisRecord(id) {
86
+ // acquire
87
+ return tracer_1.withCallTrace(fileName_1 + ":134:11")(tsplus_module_1.acquireRelease(tracer_1.withCallTrace(fileName_1 + ":126:10")(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err),
88
+ // release
89
+ lock => ({
90
+ // TODO
91
+ release: tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":131:29")(tsplus_module_1.tryPromise(() => lock.unlock())))
92
+ })))(tracer_1.withCallTrace(fileName_1 + ":121:10")(tsplus_module_1.flatMap(lock => tracer_1.withCallTrace(fileName_1 + ":122:18")(tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl)))))(RED.lock)), l => l.release));
93
+ }
94
+ function getKey(id) {
95
+ return `v${schemaVersion}.${(0, _shared.getRecordName)(type, id)}`;
96
+ }
97
+ function getLockKey(id) {
98
+ return `v${schemaVersion}.locks.${(0, _shared.getRecordName)(type, id)}`;
99
+ }
100
+ function getIdxKey(index) {
101
+ return `v${schemaVersion}.${(0, _shared.getIndexName)(type, index.doc)}`;
102
+ }
103
+ function getIdxLockKey(index) {
104
+ return `v${schemaVersion}.locks.${(0, _shared.getIndexName)(type, index.doc)}_${index.key}`;
105
+ }
106
+ };
107
+ function hmSetRec(key, val) {
108
+ const enc = RedisSerializedDBRecord.Encoder(val);
109
+ return tracer_1.withCallTrace(fileName_1 + ":157:23")(tsplus_module_1.flatMap(client => tsplus_module_1.uninterruptible(tracer_1.withCallTrace(fileName_1 + ":159:16")(tsplus_module_1.async(res => {
110
+ client.hmset(key, "version", enc.version, "timestamp", enc.timestamp, "data", enc.data, err => err ? res(tracer_1.withCallTrace(fileName_1 + ":170:30")(tsplus_module_1.fail(new _shared.ConnectionException(err)))) : res(tracer_1.withCallTrace(fileName_1 + ":171:23")(tsplus_module_1.sync(() => void 0))));
111
+ })))))(RED.client);
112
+ }
113
+ }
114
+ class RedisSerializedDBRecord extends MO.Model()({
115
+ version: MO.prop(MO.string),
116
+ timestamp: MO.prop(MO.date),
117
+ data: MO.prop(MO.string)
118
+ }) {}
119
+ exports.RedisSerializedDBRecord = RedisSerializedDBRecord;
120
+ //# sourceMappingURL=redisdb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redisdb.cjs","mappings":"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","names":["ttl","createContext","type","encode","decode","schemaVersion","makeIndexKey","getData","_","tracer_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","tsplus_module_1","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]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SerializedDBRecord = exports.OptimisticLockException = exports.CouldNotAquireDbLockException = exports.ConnectionException = void 0;
7
+ exports.getIndexName = getIndexName;
8
+ exports.getRecordName = getRecordName;
9
+ exports.makeMap = makeMap;
10
+ exports.makeSerialisedDBRecord = makeSerialisedDBRecord;
11
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
12
+ var tsplus_module_1 = _interopRequireWildcard(require("@fp-ts/data/Option"));
13
+ var tsplus_module_2 = _interopRequireWildcard(require("@effect/io/Effect"));
14
+ var MO = _interopRequireWildcard(require("@effect-app/schema"));
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ const fileName_1 = "packages/infra/_src/services/simpledb/shared.ts";
18
+ class BaseError {
19
+ constructor(message) {
20
+ this.message = message;
21
+ }
22
+ }
23
+ class CouldNotAquireDbLockException extends BaseError {
24
+ constructor(type, id, error) {
25
+ super(`Couldn't lock db record ${type}: ${id}`);
26
+ this.type = type;
27
+ this.id = id;
28
+ this.error = error;
29
+ this._errorTag = "CouldNotAquireDbLockException";
30
+ }
31
+ }
32
+ exports.CouldNotAquireDbLockException = CouldNotAquireDbLockException;
33
+ class OptimisticLockException extends Error {
34
+ constructor(type, id) {
35
+ super(`Existing ${type} ${id} record changed`);
36
+ this.type = type;
37
+ this.id = id;
38
+ this._errorTag = "OptimisticLockException";
39
+ }
40
+ }
41
+ exports.OptimisticLockException = OptimisticLockException;
42
+ class ConnectionException extends Error {
43
+ constructor(error) {
44
+ super("A connection error ocurred");
45
+ this.error = error;
46
+ this._errorTag = "ConnectionException";
47
+ }
48
+ }
49
+ exports.ConnectionException = ConnectionException;
50
+ class SerializedDBRecord extends MO.Model()({
51
+ version: MO.prop(MO.string),
52
+ timestamp: MO.prop(MO.date),
53
+ data: MO.prop(MO.string)
54
+ }) {}
55
+ // unknown -> string -> SDB?
56
+ exports.SerializedDBRecord = SerializedDBRecord;
57
+ function makeSerialisedDBRecord(s) {
58
+ return MO.props({
59
+ version: MO.prop(MO.number),
60
+ timestamp: MO.prop(MO.date),
61
+ data: MO.prop(s)
62
+ });
63
+ }
64
+ function getIndexName(type, id) {
65
+ return `${type}-idx_${id}`;
66
+ }
67
+ function getRecordName(type, id) {
68
+ return `${type}-r_${id}`;
69
+ }
70
+ function makeMap() {
71
+ const map = new Map();
72
+ return {
73
+ find: k => tracer_1.withCallTrace(fileName_1 + ":68:24")(tsplus_module_2.sync(() => tsplus_module_1.fromNullable(map.get(k)))),
74
+ [Symbol.iterator]: () => map[Symbol.iterator](),
75
+ set: (k, v) => tracer_1.withCallTrace(fileName_1 + ":71:7")(tsplus_module_2.sync(() => {
76
+ map.set(k, v);
77
+ }))
78
+ };
79
+ }
80
+ //# sourceMappingURL=shared.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.cjs","mappings":";;;;;;;;;;;;;AAAA;AAAwC;AAAA;;AAGxC,MAAMA,SAAS;EACbC,YAAmBC,OAAe;IAAf,YAAO,GAAPA,OAAO;EAAW;;AAEjC,MAAOC,6BAA8B,SAAQH,SAAS;EAE1DC,YAAqBG,IAAY,EAAWC,EAAU,EAAWC,KAAY;IAC3E,KAAK,CAAC,2BAA2BF,IAAI,KAAKC,EAAE,EAAE,CAAC;IAD5B,SAAI,GAAJD,IAAI;IAAmB,OAAE,GAAFC,EAAE;IAAmB,UAAK,GAALC,KAAK;IAD7D,cAAS,GAAG,+BAA+B;EAGpD;;AACD;AAEK,MAAOC,uBAAwB,SAAQC,KAAK;EAEhDP,YAAqBG,IAAY,EAAWC,EAAU;IACpD,KAAK,CAAC,YAAYD,IAAI,IAAIC,EAAE,iBAAiB,CAAC;IAD3B,SAAI,GAAJD,IAAI;IAAmB,OAAE,GAAFC,EAAE;IADrC,cAAS,GAAG,yBAAyB;EAG9C;;AACD;AAEK,MAAOI,mBAAoB,SAAQD,KAAK;EAE5CP,YAAqBK,KAAY;IAC/B,KAAK,CAAC,4BAA4B,CAAC;IADhB,UAAK,GAALA,KAAK;IADjB,cAAS,GAAG,qBAAqB;EAG1C;;AACD;AAMK,MAAOI,kBAAmB,SAAQC,EAAE,CAACC,KAAK,EAAsB,CAAC;EACrEC,OAAO,EAAEF,EAAE,CAACG,IAAI,CAACH,EAAE,CAACI,MAAM,CAAC;EAC3BC,SAAS,EAAEL,EAAE,CAACG,IAAI,CAACH,EAAE,CAACM,IAAI,CAAC;EAC3BC,IAAI,EAAEP,EAAE,CAACG,IAAI,CAACH,EAAE,CAACI,MAAM;CACxB,CAAC;AAEF;AAAA;AACM,SAAUI,sBAAsB,CAACC,CAAY;EACjD,OAAOT,EAAE,CAACU,KAAK,CAAC;IACdR,OAAO,EAAEF,EAAE,CAACG,IAAI,CAACH,EAAE,CAACW,MAAM,CAAC;IAC3BN,SAAS,EAAEL,EAAE,CAACG,IAAI,CAACH,EAAE,CAACM,IAAI,CAAC;IAC3BC,IAAI,EAAEP,EAAE,CAACG,IAAI,CAACM,CAAC;GAChB,CAAC;AACJ;AAYM,SAAUG,YAAY,CAACnB,IAAY,EAAEC,EAAU;EACnD,OAAO,GAAGD,IAAI,QAAQC,EAAE,EAAE;AAC5B;AAEM,SAAUmB,aAAa,CAACpB,IAAY,EAAEC,EAAU;EACpD,OAAO,GAAGD,IAAI,MAAMC,EAAE,EAAE;AAC1B;AAEM,SAAUoB,OAAO;EACrB,MAAMC,GAAG,GAAG,IAAIC,GAAG,EAAW;EAC9B,OAAO;IACLC,IAAI,EAAGC,CAAO,IAAIC,8CAACC,qBAAO,MAAMC,6BAAiBN,GAAG,CAACO,GAAG,CAACJ,CAAC,CAAC,CAAC,CAAC;IAC7D,CAACK,MAAM,CAACC,QAAQ,GAAG,MAAMT,GAAG,CAACQ,MAAM,CAACC,QAAQ,CAAC,EAAE;IAC/CC,GAAG,EAAE,CAACP,CAAO,EAAEQ,CAAI,KAAIP,6CACrBC,qBAAO,MAAK;MACVL,GAAG,CAACU,GAAG,CAACP,CAAC,EAAEQ,CAAC,CAAC;IACf,CAAC,CAAC;GACiB;AACzB","names":["BaseError","constructor","message","CouldNotAquireDbLockException","type","id","error","OptimisticLockException","Error","ConnectionException","SerializedDBRecord","MO","Model","version","prop","string","timestamp","date","data","makeSerialisedDBRecord","s","props","number","getIndexName","getRecordName","makeMap","map","Map","find","k","tracer_1","tsplus_module_2","tsplus_module_1","get","Symbol","iterator","set","v"],"sourceRoot":"","sources":["../../../_src/services/simpledb/shared.ts"],"sourcesContent":[null]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RecordCache = exports.LiveRecordCache = exports.InvalidStateError = void 0;
7
+ exports.find = find;
8
+ exports.makeLiveRecordCache = makeLiveRecordCache;
9
+ exports.store = store;
10
+ exports.storeDirectly = storeDirectly;
11
+ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
12
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
13
+ var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/Context"));
14
+ var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
15
+ var tsplus_module_4 = _interopRequireWildcard(require("@fp-ts/data/Option"));
16
+ var _shared = require("./shared.cjs");
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ const fileName_1 = "packages/infra/_src/services/simpledb/simpledb.ts";
20
+ class InvalidStateError {
21
+ constructor(message, details) {
22
+ this.message = message;
23
+ this.details = details;
24
+ this._tag = "InvalidStateError";
25
+ }
26
+ }
27
+ exports.InvalidStateError = InvalidStateError;
28
+ function makeLiveRecordCache() {
29
+ const m = new Map();
30
+ return {
31
+ get: type => tracer_1.withCallTrace(fileName_1 + ":14:7")(tsplus_module_1.sync(() => {
32
+ const ex = m.get(type);
33
+ if (!ex) {
34
+ const nm = (0, _shared.makeMap)();
35
+ m.set(type, nm);
36
+ return nm;
37
+ }
38
+ return ex;
39
+ }))
40
+ };
41
+ }
42
+ // module tag
43
+ const RecordCache = tsplus_module_2.Tag();
44
+ exports.RecordCache = RecordCache;
45
+ const LiveRecordCache = tsplus_module_1.toLayer(RecordCache)(tracer_1.withCallTrace(fileName_1 + ":31:32")(tsplus_module_1.sync(() => makeLiveRecordCache())));
46
+ exports.LiveRecordCache = LiveRecordCache;
47
+ const getM = type => eff => tracer_1.withCallTrace(fileName_1 + ":35:12")(tsplus_module_1.gen(function* ($) {
48
+ const {
49
+ get
50
+ } = yield* $(tsplus_module_1.service(RecordCache));
51
+ return yield* $(tracer_1.withCallTrace(fileName_1 + ":37:36")(tsplus_module_1.flatMap(eff))(get(type)));
52
+ }));
53
+ function find(tryRead, decode, type) {
54
+ const getCache = getM(type);
55
+ const read = id => tracer_1.withCallTrace(fileName_1 + ":55:8")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":54:8")(tsplus_module_3.tapOpt(tracer_1.withCallTrace(fileName_1 + ":48:8")(tsplus_module_3.flatMapOpt(tryRead(id), ({
56
+ data,
57
+ version
58
+ }) => tracer_1.withCallTrace(fileName_1 + ":49:22")(tsplus_module_1.mapBoth(err => new InvalidStateError("DB serialisation Issue", err), data => ({
59
+ data,
60
+ version
61
+ })))(decode(data)))), r => getCache(c => c.set(id, r)))), r => r.data));
62
+ return id => getCache(c => tracer_1.withCallTrace(fileName_1 + ":62:10")(tsplus_module_1.orElse(() => read(id)))(tracer_1.withCallTrace(fileName_1 + ":61:10")(tsplus_module_3.mapOpt(c.find(id), existing => existing.data))));
63
+ }
64
+ function storeDirectly(save, type) {
65
+ const getCache = getM(type);
66
+ return record => getCache(c => tracer_1.withCallTrace(fileName_1 + ":78:10")(tsplus_module_1.map(r => r.data))(tracer_1.withCallTrace(fileName_1 + ":77:10")(tsplus_module_1.tap(r => c.set(record.id, r)))(tracer_1.withCallTrace(fileName_1 + ":76:10")(tsplus_module_1.flatMap(cv => save(record, cv)))(tracer_1.withCallTrace(fileName_1 + ":75:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version))))));
67
+ }
68
+ function store(tryRead, save, lock, type) {
69
+ const getCache = getM(type);
70
+ return record => getCache(c => tracer_1.withCallTrace(fileName_1 + ":96:10")(tsplus_module_1.map(r => r.data))(tracer_1.withCallTrace(fileName_1 + ":95:10")(tsplus_module_1.tap(r => c.set(record.id, r)))(tracer_1.withCallTrace(fileName_1 + ":94:10")(tsplus_module_1.flatMap(_ => tsplus_module_4.match(() => save(record, tsplus_module_4.none), confirmVersionAndSave(record))(_)))(tracer_1.withCallTrace(fileName_1 + ":93:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version))))));
71
+ function confirmVersionAndSave(record) {
72
+ return cv => tsplus_module_1.scoped(tracer_1.withCallTrace(fileName_1 + ":101:23")(tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":114:12")(tsplus_module_1.zipRight(save(record, tsplus_module_4.some(cv))))(tracer_1.withCallTrace(fileName_1 + ":109:12")(tsplus_module_1.tap(({
73
+ version
74
+ }) => version !== cv ? tracer_1.withCallTrace(fileName_1 + ":111:24")(tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id))) : tsplus_module_3.unit))(tracer_1.withCallTrace(fileName_1 + ":103:12")(tsplus_module_1.flatMap(_ => tsplus_module_4.match(() => tracer_1.withCallTrace(fileName_1 + ":105:28")(tsplus_module_1.fail(new InvalidStateError("record is gone"))), tsplus_module_1.succeed)(_)))(tryRead(record.id))))))(lock(record.id)));
75
+ }
76
+ }
77
+ //# sourceMappingURL=simpledb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpledb.cjs","mappings":"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","names":["InvalidStateError","constructor","message","details","makeLiveRecordCache","m","Map","get","type","tracer_1","tsplus_module_1","ex","nm","set","RecordCache","tsplus_module_2","LiveRecordCache","getM","eff","$","find","tryRead","decode","getCache","read","id","tsplus_module_3","data","version","err","r","c","existing","storeDirectly","save","record","cv","x","store","lock","_","tsplus_module_4","confirmVersionAndSave","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null]}