@effect-app/infra 0.21.6 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/_cjs/_ext/Array.cjs +3 -2
  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 +18 -17
  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 +40 -40
  13. package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
  14. package/_cjs/api/express/schema/routing.cjs +15 -15
  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 +49 -49
  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 +4 -4
  29. package/_cjs/rateLimit.cjs.map +1 -1
  30. package/_cjs/services/Emailer/Sendgrid.cjs +8 -7
  31. package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
  32. package/_cjs/services/Emailer/fake.cjs +5 -4
  33. package/_cjs/services/Emailer/fake.cjs.map +1 -1
  34. package/_cjs/services/Operations/live.cjs +8 -8
  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 +11 -10
  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 +38 -38
  47. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  48. package/_cjs/services/Store/Disk.cjs +10 -9
  49. package/_cjs/services/Store/Disk.cjs.map +1 -1
  50. package/_cjs/services/Store/Memory.cjs +12 -12
  51. package/_cjs/services/Store/Memory.cjs.map +1 -1
  52. package/_cjs/services/Store/Redis.cjs +15 -14
  53. package/_cjs/services/Store/Redis.cjs.map +1 -1
  54. package/_cjs/services/Store/index.cjs +4 -4
  55. package/_cjs/services/Store/index.cjs.map +1 -1
  56. package/_cjs/services/simpledb/cosmosdb.cjs +18 -18
  57. package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
  58. package/_cjs/services/simpledb/diskdb.cjs +17 -17
  59. package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
  60. package/_cjs/services/simpledb/memdb.cjs +8 -8
  61. package/_cjs/services/simpledb/memdb.cjs.map +1 -1
  62. package/_cjs/services/simpledb/mongodb.cjs +14 -14
  63. package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
  64. package/_cjs/services/simpledb/redisdb.cjs +19 -19
  65. package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
  66. package/_cjs/services/simpledb/simpledb.cjs +9 -9
  67. package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
  68. package/dist/_ext/Array.js +4 -3
  69. package/dist/api/codec.js +2 -2
  70. package/dist/api/defaultErrorHandler.js +18 -18
  71. package/dist/api/express/makeJsonSchema.js +5 -5
  72. package/dist/api/express/makeOpenApiSpecs.js +2 -2
  73. package/dist/api/express/schema/requestHandler.js +36 -36
  74. package/dist/api/express/schema/routing.js +16 -16
  75. package/dist/api/reportError.js +4 -4
  76. package/dist/api/routing.js +58 -58
  77. package/dist/api/setupRequest.js +3 -3
  78. package/dist/api/writeDocs.js +7 -7
  79. package/dist/errorReporter.js +3 -3
  80. package/dist/instrument.js +2 -2
  81. package/dist/rateLimit.js +5 -5
  82. package/dist/services/Emailer/Sendgrid.js +9 -8
  83. package/dist/services/Emailer/fake.js +6 -5
  84. package/dist/services/Operations/live.js +9 -9
  85. package/dist/services/Operations/service.js +4 -4
  86. package/dist/services/QueueMaker/errors.js +4 -4
  87. package/dist/services/QueueMaker/memQueue.js +10 -10
  88. package/dist/services/QueueMaker/sbqueue.js +5 -5
  89. package/dist/services/Repository.js +15 -15
  90. package/dist/services/Store/Cosmos.js +40 -40
  91. package/dist/services/Store/Disk.js +12 -11
  92. package/dist/services/Store/Memory.js +14 -14
  93. package/dist/services/Store/Redis.js +16 -15
  94. package/dist/services/Store/index.js +5 -5
  95. package/dist/services/simpledb/cosmosdb.js +18 -18
  96. package/dist/services/simpledb/diskdb.js +14 -14
  97. package/dist/services/simpledb/memdb.js +9 -9
  98. package/dist/services/simpledb/mongodb.js +13 -13
  99. package/dist/services/simpledb/redisdb.js +16 -16
  100. package/dist/services/simpledb/simpledb.js +12 -12
  101. package/package.json +11 -11
@@ -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(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)));
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));
20
20
  function createContext() {
21
21
  return (type, encode, decode,
22
22
  // schemaVersion: string,
23
23
  indexes) => {
24
- return tsplus_module_1.map(setup(type, indexes), () => ({
24
+ return tsplus_module_1.map(() => ({
25
25
  find: simpledb.find(find, decode, type),
26
26
  findBy,
27
27
  save: simpledb.storeDirectly(store, type)
28
- }));
28
+ }))(setup(type, indexes));
29
29
  function find(id) {
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({
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({
31
31
  _id: id
32
- }))), tsplus_module_2.fromNullable), ({
32
+ })))(Mongo.db)), ({
33
33
  data,
34
34
  version
35
35
  }) => ({
@@ -38,11 +38,11 @@ function createContext() {
38
38
  }));
39
39
  }
40
40
  function findBy(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, {
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, {
42
42
  projection: {
43
43
  _id: 1
44
44
  }
45
- }))), tsplus_module_2.fromNullable), ({
45
+ })))(Mongo.db)), ({
46
46
  _id
47
47
  }) => _id);
48
48
  }
@@ -58,7 +58,12 @@ function createContext() {
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(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({
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({
62
67
  _id: record.id,
63
68
  version: currentVersion
64
69
  }, {
@@ -67,12 +72,7 @@ function createContext() {
67
72
  data
68
73
  }, {
69
74
  upsert: false
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
- }))(currentVersion));
75
+ })))))(currentVersion));
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","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]}
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]}
@@ -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(tsplus_module_1.map((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v), ({
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(({
31
31
  data,
32
32
  version
33
33
  }) => ({
34
34
  data: JSON.parse(data),
35
35
  version
36
- })), e => new _shared.ConnectionException(new Error(e.toString())))));
36
+ }))((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v)))));
37
37
  }
38
38
  function store(record, currentVersion) {
39
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(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), {
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), {
43
44
  version,
44
45
  timestamp: new Date(),
45
46
  data
46
- })), setIndex(record))), () => ({
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(() => ({
47
50
  version,
48
51
  data: record
49
- })))), () => tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(getData(record), data => hmSetRec(getKey(record.id), {
52
+ }))(tsplus_module_1.orDie(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
50
53
  version,
51
54
  timestamp: new Date(),
52
55
  data
53
- }))), () => ({
54
- version,
55
- data: record
56
- })))(currentVersion);
56
+ }))(getData(record)))))(currentVersion);
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(RED.hget(getIdxKey(index), index.key), _ => tsplus_module_3.map(i => i)(_));
71
+ return tsplus_module_1.map(_ => tsplus_module_3.map(i => i)(_))(RED.hget(getIdxKey(index), index.key));
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(tsplus_module_1.flatMap(RED.lock, lock => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl))), err => new _shared.CouldNotAquireDbLockException(type, lockKey, err),
79
+ return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(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
- })), l => l.release);
83
+ }))(tsplus_module_1.flatMap(lock => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl)))(RED.lock)), l => l.release);
84
84
  }
85
85
  function lockRedisRecord(id) {
86
86
  // acquire
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),
87
+ return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(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
- })), l => l.release);
92
+ }))(tsplus_module_1.flatMap(lock => tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl)))(RED.lock)), 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(RED.client, client => tsplus_module_1.uninterruptible(tsplus_module_1.async(res => {
109
+ return tsplus_module_1.flatMap(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
- })));
111
+ })))(RED.client);
112
112
  }
113
113
  }
114
114
  class RedisSerializedDBRecord extends MO.Model()({
@@ -1 +1 @@
1
- {"version":3,"file":"redisdb.cjs","mappings":";;;;;;;;;;AAEA;AACA;AAGA;AAEA;AACA;AAAyC;AAAA;AATzC;;AAWA,MAAMA,GAAG,GAAG,EAAE,GAAG,IAAI;AAEf,SAAUC,aAAa;EAC3B,OAAO,CACLC,IAAY,EACZC,MAAiD,EACjDC,MAA8C,EAC9CC,aAAqB,EACrBC,YAA6B,KAC3B;IACF,MAAMC,OAAO,GAAG,kBAAI,EAACJ,MAAM,EAAEK,CAAC,IAAIC,qBAAC,EAAKC,IAAI,CAACC,SAAS,CAAC,CAAC;IACxD,OAAO;MACLC,IAAI,EAAEC,QAAQ,CAACD,IAAI,CAACA,IAAI,EAAER,MAAM,EAAEF,IAAI,CAAC;MACvCY,WAAW,EAAEC,MAAM;MACnBC,IAAI,EAAEH,QAAQ,CAACI,KAAK,CAACL,IAAI,EAAEK,KAAK,EAAEC,eAAe,EAAEhB,IAAI;KACxD;IAED,SAASU,IAAI,CAACO,EAAU;MACtB,6BAAOC,iCAAG,CAACC,QAAQ,CAACC,MAAM,CAACH,EAAE,CAAC,CAAC,EAAYI,CAAC,IAC1Cd,+DAAI,EACFe,uBAAuB,CAACC,MAAM,EAC9BC,EAAE,CAACC,WAAW,CACf,CAACJ,CAAC,CAAC,EACG,CAAC;QAAEK,IAAI;QAAEC;MAAO,CAAE,MAAM;QAC3BD,IAAI,EAAElB,IAAI,CAACoB,KAAK,CAACF,IAAI,CAAO;QAC5BC;OACD,CAAC,CAAC,EACOE,CAAC,IAAI,IAAIC,2BAAmB,CAAC,IAAIC,KAAK,CAACF,CAAC,CAACG,QAAQ,EAAE,CAAC,CAAC,CAAC,CACnE;IACH;IACA,SAASjB,KAAK,CAACkB,MAAS,EAAEC,cAA8B;MACtD,MAAMP,OAAO,GAAGQ,0BAEH,MAAM,GAAG,EAFNA,oBACTC,EAAE,IAAI,CAACC,QAAQ,CAACD,EAAE,CAAC,GAAG,CAAC,EAAEJ,QAAQ,EAAE,EAD1BE,cAAc,CACa,CACpB;MACvB,OAAOC,sBACL,MAAK5B,uBACHA,kCAAS,CAAC0B,MAAM,CAAC,EACf1B,2JAAQ,CAAC0B,MAAM,CAAC,EAEZ1B,qBAAY,MAAM,IAAIwB,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAClE,EACS1B,OAAO,CAAC4B,MAAM,CAAC;MACzB;MAAA,EACSP,IAAI,IACXY,QAAQ,CAAClB,MAAM,CAACa,MAAM,CAAChB,EAAE,CAAC,EAAE;QAC1BU,OAAO;QACPY,SAAS,EAAE,IAAIC,IAAI,EAAE;QACrBd;OACD,CAAC,CACH,EACSe,QAAQ,CAACR,MAAM,CAAC,CAAC,GAChB,OAAO;QAAEN,OAAO;QAAED,IAAI,EAAEO;MAAM,CAAsB,EAAC,CACnE,CAAO,EACV,MACE1B,yEAAO,CAAC0B,MAAM,CAAC,EACJP,IAAI,IACXY,QAAQ,CAAClB,MAAM,CAACa,MAAM,CAAChB,EAAE,CAAC,EAAE;QAC1BU,OAAO;QACPY,SAAS,EAAE,IAAIC,IAAI,EAAE;QACrBd;OACD,CAAC,CACH,GACU,OAAO;QAAEC,OAAO;QAAED,IAAI,EAAEO;MAAM,CAAsB,EAAC,EA5B/DC,cAAc,CA6BpB;IACH;IAEA,SAASQ,QAAQ,CAACT,MAAS;MACzB,MAAMU,KAAK,GAAGvC,YAAY,CAAC6B,MAAM,CAAC;MAClC,OAAOpB,MAAM,CAAC8B,KAAK,CAAC;IACtB;IAEA,SAASF,QAAQ,CAACR,MAAS;MACzB,MAAMU,KAAK,GAAGvC,YAAY,CAAC6B,MAAM,CAAC;MAClC,OAAOW,MAAM,CAACD,KAAK,EAAEV,MAAM,CAAC;IAC9B;IAEA,SAASY,SAAS,CAACZ,MAAS;MAC1B,MAAMU,KAAK,GAAGvC,YAAY,CAAC6B,MAAM,CAAC;MAClC,OAAOa,YAAY,CAACH,KAAK,CAAC;IAC5B;IAEA,SAAS9B,MAAM,CAAC8B,KAAY;MAC1B,OAAOpC,uBAAG,CAACwC,IAAI,CAACC,SAAS,CAACL,KAAK,CAAC,EAAEA,KAAK,CAACM,GAAG,CAAC,EAAK3C,CAAC,IAAI6B,oBAAMe,CAAC,IAAIA,CAAS,EAApB5C,CAAC,CAAoB,CAAC;IAC9E;IAEA,SAASsC,MAAM,CAACD,KAAY,EAAEQ,CAAI;MAChC,OAAOC,GAAG,CAACC,IAAI,CAACL,SAAS,CAACL,KAAK,CAAC,EAAEA,KAAK,CAACM,GAAG,EAAEE,CAAC,CAAClC,EAAE,CAAC;IACpD;IAEA,SAAS6B,YAAY,CAACH,KAAY;MAChC,MAAMW,OAAO,GAAGC,aAAa,CAACZ,KAAK,CAAC;MACpC;MACA,OAAOpC,kFAAG,CAACiD,IAAI,EACJA,IAAI,IAAIjD,2BAAkB,MAAMiD,IAAI,CAACA,IAAI,CAACF,OAAO,EAAExD,GAAG,CAA6B,CAAC,CAAC,EAE5F2D,GAAG,IAAI,IAAIC,qCAA6B,CAAC1D,IAAI,EAAEsD,OAAO,EAAEG,GAAY,CAAC;MACrE;MACAD,IAAI,KAAK;QACPG,OAAO,wBAAEpD,2BAAkB,MAAMiD,IAAI,CAACI,MAAM,EAA8B,CAAC;OAE5E,CAAC,CACH,EACCC,CAAC,IAAIA,CAAC,CAACF,OAAO,CACf;IACL;IAEA,SAAS3C,eAAe,CAACC,EAAU;MACjC;MACA,OAAOV,kFAAG,CAACiD,IAAI,EACJA,IAAI,IACXjD,2BACE,MAAMiD,IAAI,CAACA,IAAI,CAACM,UAAU,CAAC7C,EAAE,CAAC,EAAEnB,GAAG,CAA6B,CACjE,CACF,EAEC2D,GAAG,IAAI,IAAIC,qCAA6B,CAAC1D,IAAI,EAAEiB,EAAE,EAAEwC,GAAY,CAAC;MAChE;MACAD,IAAI,KAAK;QACP;QACAG,OAAO,wBAAEpD,2BAAkB,MAAMiD,IAAI,CAACI,MAAM,EAA8B,CAAC;OAE5E,CAAC,CACH,EACCC,CAAC,IAAIA,CAAC,CAACF,OAAO,CACf;IACL;IAEA,SAASvC,MAAM,CAACH,EAAU;MACxB,OAAO,IAAId,aAAa,IAAI,yBAAa,EAACH,IAAI,EAAEiB,EAAE,CAAC,EAAE;IACvD;IAEA,SAAS6C,UAAU,CAAC7C,EAAU;MAC5B,OAAO,IAAId,aAAa,UAAU,yBAAa,EAACH,IAAI,EAAEiB,EAAE,CAAC,EAAE;IAC7D;IAEA,SAAS+B,SAAS,CAACL,KAAY;MAC7B,OAAO,IAAIxC,aAAa,IAAI,wBAAY,EAACH,IAAI,EAAE2C,KAAK,CAACoB,GAAG,CAAC,EAAE;IAC7D;IACA,SAASR,aAAa,CAACZ,KAAY;MACjC,OAAO,IAAIxC,aAAa,UAAU,wBAAY,EAACH,IAAI,EAAE2C,KAAK,CAACoB,GAAG,CAAC,IAAIpB,KAAK,CAACM,GAAG,EAAE;IAChF;EACF,CAAC;EAED,SAASX,QAAQ,CAACW,GAAW,EAAEe,GAA4B;IACzD,MAAMC,GAAG,GAAG3C,uBAAuB,CAAC4C,OAAO,CAACF,GAAG,CAAC;IAChD,OAAOzD,2BAAG,CAAC4D,MAAM,EACfA,MAAM,IAAG5D,gCACPA,sBAA+C6D,GAAG,IAAG;MACnDD,MAAM,CAACE,KAAK,CACVpB,GAAG,EACH,SAAS,EACTgB,GAAG,CAACtC,OAAO,EACX,WAAW,EACXsC,GAAG,CAAC1B,SAAS,EACb,MAAM,EACN0B,GAAG,CAACvC,IAAI,EACR+B,GAAG,IACDA,GAAG,GACCW,GAAG,CAAC7D,qBAAY,IAAIuB,2BAAmB,CAAC2B,GAAG,CAAC,CAAC,CAAC,GAC9CW,GAAG,CAAC7D,2BAAO,KAAK,CAAC,CAAC,CAAC,CAC1B;IACH,CAAC,CAAC,CAAgB,CACrB;EACH;AACF;AAEM,MAAOe,uBAAwB,SAAQE,EAAE,CAAC8C,KAAK,EAA2B,CAAC;EAC/E3C,OAAO,EAAEH,EAAE,CAAC+C,IAAI,CAAC/C,EAAE,CAACgD,MAAM,CAAC;EAC3BjC,SAAS,EAAEf,EAAE,CAAC+C,IAAI,CAAC/C,EAAE,CAACiD,IAAI,CAAC;EAC3B/C,IAAI,EAAEF,EAAE,CAAC+C,IAAI,CAAC/C,EAAE,CAACgD,MAAM;CACxB,CAAC;AAAG","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]}
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]}
@@ -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_1.toLayer(tsplus_module_1.sync(() => makeLiveRecordCache()), RecordCache);
44
+ const LiveRecordCache = tsplus_module_3.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(get(type), eff));
50
+ return yield* $(tsplus_module_1.flatMap(eff)(get(type)));
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(decode(data), err => new InvalidStateError("DB serialisation Issue", err), data => ({
57
+ }) => tsplus_module_1.mapBoth(err => new InvalidStateError("DB serialisation Issue", err), data => ({
58
58
  data,
59
59
  version
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)));
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)));
62
62
  }
63
63
  function storeDirectly(save, type) {
64
64
  const getCache = getM(type);
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));
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)))));
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(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));
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)))));
70
70
  function confirmVersionAndSave(record) {
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)(_)), ({
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(({
72
72
  version
73
- }) => version !== cv ? tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)) : tsplus_module_3.unit), save(record, tsplus_module_5.some(cv)))));
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)));
74
74
  }
75
75
  }
76
76
  //# sourceMappingURL=simpledb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"simpledb.cjs","mappings":"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","names":["InvalidStateError","constructor","message","details","makeLiveRecordCache","m","Map","get","type","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","x","cv","store","lock","_","tsplus_module_5","confirmVersionAndSave","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"simpledb.cjs","mappings":"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","names":["InvalidStateError","constructor","message","details","makeLiveRecordCache","m","Map","get","type","tsplus_module_1","ex","nm","set","RecordCache","tsplus_module_2","LiveRecordCache","tsplus_module_3","getM","eff","$","find","tryRead","decode","getCache","read","id","data","version","err","r","c","existing","storeDirectly","save","record","cv","x","store","lock","_","tsplus_module_5","confirmVersionAndSave","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null]}
@@ -1,5 +1,6 @@
1
1
  import * as tsplus_module_1 from "@effect/data/Chunk";
2
- import * as tsplus_module_2 from "@effect-app/prelude/_ext/misc";
2
+ import * as tsplus_module_2 from "@effect-app/core/Chunk";
3
+ import * as tsplus_module_3 from "@effect-app/prelude/_ext/misc";
3
4
  import { inspect } from "util";
4
5
  import { NotFoundError } from "../errors.js";
5
6
  /**
@@ -10,7 +11,7 @@ import { NotFoundError } from "../errors.js";
10
11
  * @tsplus fluent ReadonlyArray getFirstById
11
12
  */
12
13
  export function getFirstById_(a, id, type) {
13
- return tsplus_module_2.encaseMaybeInEffect_(tsplus_module_1.findFirst(tsplus_module_1.fromIterable(a), _ => _.id === id), () => new NotFoundError(type, id));
14
+ return tsplus_module_3.encaseMaybeInEffect_(tsplus_module_2.findFirstSimple(tsplus_module_1.fromIterable(a), _ => _.id === id), () => new NotFoundError(type, id));
14
15
  }
15
16
  /**
16
17
  * @tsplus fluent Object.Ops inspect
@@ -18,4 +19,4 @@ export function getFirstById_(a, id, type) {
18
19
  export function RecordInspect(o, showHidden, depth, color) {
19
20
  return inspect(o.subject, showHidden, depth, color);
20
21
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL19leHQvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsQ0FBYyxFQUNkLEVBQU0sRUFDTixJQUFVO0lBRVYsT0FBTyxxQ0FBQSwwQkFBQSw2QkFBbUIsQ0FBQyxDQUFDLEVBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUNaLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLENBQWdCLEVBQ2hCLFVBQWdDLEVBQ2hDLEtBQWlDLEVBQ2pDLEtBQTJCO0lBRTNCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUNyRCxDQUFDIn0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL19leHQvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTVDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLENBQWMsRUFDZCxFQUFNLEVBQ04sSUFBVTtJQUVWLE9BQU8scUNBQUEsZ0NBQUEsNkJBQW1CLENBQUMsQ0FBQyxFQUNmLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDWixHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixDQUFnQixFQUNoQixVQUFnQyxFQUNoQyxLQUFpQyxFQUNqQyxLQUEyQjtJQUUzQixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDckQsQ0FBQyJ9
package/dist/api/codec.js CHANGED
@@ -12,6 +12,6 @@ export function makeCodec(self) {
12
12
  return [decode, encode, encodeToMap];
13
13
  }
14
14
  function toMap(encode) {
15
- return (a) => tsplus_module_1.map(tsplus_module_2.ext_collectAll(a.map(task => tsplus_module_1.tuple(tsplus_module_1.sync(() => task.id), encode(task)))), _ => new Map(_));
15
+ return (a) => tsplus_module_1.map(_ => new Map(_))(tsplus_module_2.ext_collectAll(a.map(task => tsplus_module_1.tuple(tsplus_module_1.sync(() => task.id), encode(task)))));
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL2FwaS9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUdwRCxNQUFNLFVBQVUsU0FBUyxDQU12QixJQUFxRTtJQUNyRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFVLEVBQUUsR0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLDJCQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQVUsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQThCLE1BQXlDO0lBQ25GLE9BQU8sQ0FBQyxDQUFtQixFQUFFLEVBQUUsQ0FDN0Isb0JBQUEsK0JBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFhLDJCQUFPLElBQUksQ0FBQyxFQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxFQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFDIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL2FwaS9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUdwRCxNQUFNLFVBQVUsU0FBUyxDQU12QixJQUFxRTtJQUNyRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFVLEVBQUUsR0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLDJCQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQVUsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQThCLE1BQXlDO0lBQ25GLE9BQU8sQ0FBQyxDQUFtQixFQUFFLEVBQUUsQ0FDN0Isb0JBRU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFGdEIsK0JBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFhLDJCQUFPLElBQUksQ0FBQyxFQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUNRLENBQUE7QUFDM0IsQ0FBQyJ9
@@ -5,32 +5,32 @@ import * as tsplus_module_4 from "@effect/io/Debug";
5
5
  import * as tsplus_module_5 from "@effect/io/Schedule";
6
6
  import { logRequestError } from "./reportError.js";
7
7
  export function defaultBasicErrorHandler(_req, res, _requestContext, r2) {
8
- return tsplus_module_4.untraced(() => tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r2, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
8
+ return tsplus_module_4.untraced(() => tsplus_module_1.catchAll((err) => tsplus_module_1.flatMap(tsplus_module_1.die)(tsplus_module_1.map(() => err)(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err))))(tsplus_module_1.catchTag("ValidationError", err => tsplus_module_1.sync(() => {
9
9
  res.status(400).send(err.errors);
10
- }))
10
+ }))(tsplus_module_1.tapErrorCause(cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit)(r2))
11
11
  // final catch all; expecting never so that unhandled known errors will show up
12
- , (err) => tsplus_module_1.flatMap(tsplus_module_1.map(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_1.die)));
12
+ ));
13
13
  }
14
14
  const optimisticConcurrencySchedule = tsplus_module_5.intersect(tsplus_module_5.recurWhile(a => a._tag === "OptimisticConcurrencyException"))(tsplus_module_5.once());
15
15
  export function defaultErrorHandler(req, res, _, r2) {
16
16
  const r3 = req.method === "PATCH"
17
- ? tsplus_module_1.retry(r2, optimisticConcurrencySchedule)
17
+ ? tsplus_module_1.retry(optimisticConcurrencySchedule)(r2)
18
18
  : r2;
19
- return tsplus_module_4.untraced(() => tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r3, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
20
- res.status(400).send(err.errors);
21
- })), "NotFoundError", err => tsplus_module_1.sync(() => {
22
- res.status(404).send(err);
23
- })), "NotLoggedInError", err => tsplus_module_1.sync(() => {
24
- res.status(401).send(err);
25
- })), "UnauthorizedError", err => tsplus_module_1.sync(() => {
26
- res.status(403).send(err);
27
- })), "InvalidStateError", err => tsplus_module_1.sync(() => {
28
- res.status(422).send(err);
29
- })), "OptimisticConcurrencyException", err => tsplus_module_1.sync(() => {
19
+ return tsplus_module_4.untraced(() => tsplus_module_1.catchAll((err) => tsplus_module_1.flatMap(tsplus_module_1.die)(tsplus_module_1.map(() => err)(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err))))(tsplus_module_1.catchTag("OptimisticConcurrencyException", err => tsplus_module_1.sync(() => {
30
20
  // 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
31
21
  res.status(412).send(err);
32
- }))
22
+ }))(tsplus_module_1.catchTag("InvalidStateError", err => tsplus_module_1.sync(() => {
23
+ res.status(422).send(err);
24
+ }))(tsplus_module_1.catchTag("UnauthorizedError", err => tsplus_module_1.sync(() => {
25
+ res.status(403).send(err);
26
+ }))(tsplus_module_1.catchTag("NotLoggedInError", err => tsplus_module_1.sync(() => {
27
+ res.status(401).send(err);
28
+ }))(tsplus_module_1.catchTag("NotFoundError", err => tsplus_module_1.sync(() => {
29
+ res.status(404).send(err);
30
+ }))(tsplus_module_1.catchTag("ValidationError", err => tsplus_module_1.sync(() => {
31
+ res.status(400).send(err.errors);
32
+ }))(tsplus_module_1.tapErrorCause(cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit)(r3)))))))
33
33
  // final catch all; expecting never so that unhandled known errors will show up
34
- , (err) => tsplus_module_1.flatMap(tsplus_module_1.map(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_1.die)));
34
+ ));
35
35
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL2RlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFbEQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxJQUFxQixFQUNyQixHQUFxQixFQUNyQixlQUErQixFQUMvQixFQUFvQztJQUVwQyxPQUFPLHlCQUFlLEdBQUcsRUFBRSxDQUN6Qix5QkFBQSx5QkFBQSw4QkFBQSxFQUFFLEVBQ2UsS0FBSyxDQUFDLEVBQUUsQ0FBQywwQkFBQSxLQUFLLENBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQVksQ0FBQyxFQUN2RSxpQkFBaUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNqQyxxQkFBWSxHQUFHLEVBQUU7UUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCwrRUFBK0U7TUFDckUsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUN2Qix3QkFBQSxvQkFBQSx5QkFDRSxnR0FBZ0csR0FBRyxHQUFHLENBQ3ZHLEVBQ00sR0FBRyxFQUFFLENBQUMsR0FBYyxDQUFDLHNCQUNOLENBQ3ZCLENBQ0osQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLDZCQUE2Qiw2QkFDakMsMkJBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxFQURsRCxzQkFBZSxDQUNtQyxDQUFBO0FBRXhGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBb0IsRUFDcEIsR0FBcUIsRUFDckIsQ0FBaUIsRUFDakIsRUFBb0M7SUFFcEMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE9BQU8seUJBQWUsR0FBRyxFQUFFLENBQ3pCLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLDhCQUFBLEVBQUUsRUFDZSxLQUFLLENBQUMsRUFBRSxDQUFDLDBCQUFBLEtBQUssQ0FBWSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBWSxDQUFDLEVBQ3ZFLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ2pDLHFCQUFZLEdBQUcsRUFBRTtRQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsQ0FBQyxFQUNLLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUMvQixxQkFBWSxHQUFHLEVBQUU7UUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQyxFQUNLLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ2xDLHFCQUFZLEdBQUcsRUFBRTtRQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDLEVBQ0ssbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDbkMscUJBQVksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLENBQUMsRUFDSyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNuQyxxQkFBWSxHQUFHLEVBQUU7UUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQyxFQUNLLGdDQUFnQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ2hELHFCQUFZLEdBQUcsRUFBRTtRQUNmLDRJQUE0STtRQUM1SSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLCtFQUErRTtNQUNyRSxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQ3ZCLHdCQUFBLG9CQUFBLHlCQUNFLGdHQUFnRyxHQUFHLEdBQUcsQ0FDdkcsRUFDTSxHQUFHLEVBQUUsQ0FBQyxHQUFjLENBQUMsc0JBQ04sQ0FDdkIsQ0FDSixDQUFBO0FBQ0gsQ0FBQyJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL2RlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFbEQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxJQUFxQixFQUNyQixHQUFxQixFQUNyQixlQUErQixFQUMvQixFQUFvQztJQUVwQyxPQUFPLHlCQUFlLEdBQUcsRUFBRSxDQUN6Qix5QkFPWSxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQ3ZCLDZDQUFBLG9CQUdPLEdBQUcsRUFBRSxDQUFDLEdBQWMsRUFIM0IseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxDQUMyQixDQUNOLEVBWjFCLHlCQUVZLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ2pDLHFCQUFZLEdBQUcsRUFBRTtRQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFMTiw4QkFDaUIsS0FBSyxDQUFDLEVBQUUsQ0FBQywwQkFBQSxLQUFLLENBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQVksRUFEbEYsRUFBRSxDQUNpRixDQUk1RTtJQUNMLCtFQUErRTtLQU85RSxDQUNKLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSw2QkFBNkIsNkJBQ2pDLDJCQUFxQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLENBQUMsRUFEbEQsc0JBQWUsQ0FDbUMsQ0FBQTtBQUV4RixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEdBQW9CLEVBQ3BCLEdBQXFCLEVBQ3JCLENBQWlCLEVBQ2pCLEVBQW9DO0lBRXBDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssT0FBTztRQUMvQixDQUFDLENBQUMsc0JBQVMsNkJBQTZCLEVBQXRDLEVBQUUsQ0FBcUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE9BQU8seUJBQWUsR0FBRyxFQUFFLENBQ3pCLHlCQTRCWSxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQ3ZCLDZDQUFBLG9CQUdPLEdBQUcsRUFBRSxDQUFDLEdBQWMsRUFIM0IseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxDQUMyQixDQUNOLEVBakMxQix5QkFzQlksZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDaEQscUJBQVksR0FBRyxFQUFFO1FBQ2YsNElBQTRJO1FBQzVJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxFQTFCTix5QkFrQlksbUJBQW1CLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDbkMscUJBQVksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLEVBckJOLHlCQWNZLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ25DLHFCQUFZLEdBQUcsRUFBRTtRQUNmLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxFQWpCTix5QkFVWSxrQkFBa0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNsQyxxQkFBWSxHQUFHLEVBQUU7UUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsRUFiTix5QkFNWSxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDL0IscUJBQVksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLEVBVE4seUJBRVksaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDakMscUJBQVksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxFQUxOLDhCQUNpQixLQUFLLENBQUMsRUFBRSxDQUFDLDBCQUFBLEtBQUssQ0FBWSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBWSxFQURsRixFQUFFLENBQ2lGLENBSTVFLENBSUEsQ0FJQSxDQUlBLENBSUEsQ0FLQTtJQUNMLCtFQUErRTtLQU85RSxDQUNKLENBQUE7QUFDSCxDQUFDIn0=
@@ -8,7 +8,7 @@ const rx = /:(\w+)/g;
8
8
  * Work in progress JSONSchema generator.
9
9
  */
10
10
  export function makeJsonSchema(r) {
11
- return tsplus_module_3.map(tsplus_module_2.ext_forEach(tsplus_module_1.fromIterable(r), RS.makeFromSchema), e => {
11
+ return tsplus_module_3.map(e => {
12
12
  const map = ({ method, path, responses, ...rest }) => ({
13
13
  [method]: {
14
14
  ...rest,
@@ -18,15 +18,15 @@ export function makeJsonSchema(r) {
18
18
  }, {})
19
19
  }
20
20
  });
21
- return tsplus_module_1.reduce(e, {}, (prev, e) => {
21
+ return tsplus_module_1.reduce({}, (prev, e) => {
22
22
  const path = e.path.split("?")[0].replace(rx, (_a, b) => `{${b}}`);
23
23
  prev[path] = {
24
24
  ...prev[path],
25
25
  ...map(e)
26
26
  };
27
27
  return prev;
28
- });
29
- });
28
+ })(e);
29
+ })(tsplus_module_2.ext_forEach(tsplus_module_1.fromIterable(r), RS.makeFromSchema));
30
30
  }
31
31
  class Response {
32
32
  constructor(statusCode, type // string | JSONSchema | SubSchema
@@ -35,4 +35,4 @@ class Response {
35
35
  this.type = type;
36
36
  }
37
37
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0M7SUFDL0QsT0FBTyxvQkFBQSw0QkFBQSw2QkFBbUIsQ0FBQyxDQUFDLEVBQ1gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUM1QixDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNSLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUcsU0FBd0IsQ0FBQyxNQUFNLENBQ3pDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtvQkFDL0IsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZEO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLHVCQUFBLENBQUMsRUFDTixFQUE2RCxFQUM3RCxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNWLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNYLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQVE7YUFDakIsQ0FBQTtZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFDWixZQUNrQixVQUFrQixFQUNsQixJQUFTLENBQUMsa0NBQWtDOztRQUQ1QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQUs7SUFDeEIsQ0FBQztDQUNMIn0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0M7SUFDL0QsT0FBTyxvQkFFQSxDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNSLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUcsU0FBd0IsQ0FBQyxNQUFNLENBQ3pDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtvQkFDL0IsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZEO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLHVCQUNMLEVBQTZELEVBQzdELENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBVEksQ0FBQyxDQVVQLENBQUE7SUFDSCxDQUFDLEVBMUJJLDRCQUFBLDZCQUFtQixDQUFDLENBQUMsRUFDWCxFQUFFLENBQUMsY0FBYyxDQUFDLENBeUIvQixDQUFBO0FBQ04sQ0FBQztBQUVELE1BQU0sUUFBUTtJQUNaLFlBQ2tCLFVBQWtCLEVBQ2xCLElBQVMsQ0FBQyxrQ0FBa0M7O1FBRDVDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUN4QixDQUFDO0NBQ0wifQ==
@@ -5,7 +5,7 @@ import { makeJsonSchema } from "./makeJsonSchema.js";
5
5
  export function makeOpenApiSpecs(rdescs, info) {
6
6
  return tsplus_module_2.gen(function* ($) {
7
7
  const ref = yield* $(tsplus_module_1.make(new Map()));
8
- const paths = yield* $(tsplus_module_2.provideService(makeJsonSchema(rdescs), References, { ref }));
8
+ const paths = yield* $(tsplus_module_2.provideService(References, { ref })(makeJsonSchema(rdescs)));
9
9
  const refs = yield* $(tsplus_module_1.get(ref));
10
10
  const parameterRefs = {}; // todos
11
11
  const schemas = {};
@@ -49,4 +49,4 @@ export function makeOpenApiSpecs(rdescs, info) {
49
49
  };
50
50
  });
51
51
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFnQixVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBQyxHQUFHLEVBQUssQ0FBQTtRQUM5QixNQUFNLGFBQWEsR0FBd0IsRUFBRSxDQUFBLENBQUMsUUFBUTtRQUN0RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsWUFBWSxFQUFFLEtBQUs7YUFDcEI7U0FDRixDQUFBLENBQUMsbURBQW1EO1FBQ3JELE1BQU0sVUFBVSxHQUFHLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUE7UUFFMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsZ0RBQWdEO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDN0I7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLE9BQU87WUFDaEIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QjtZQUNELElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSztZQUNMLFVBQVU7WUFDVixRQUFRO1NBQ1QsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQXNDLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUF6RCxjQUFjLENBQUMsTUFBTSxDQUFDLENBQW9DLENBQUMsQ0FBQTtRQUNsRixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFDLEdBQUcsRUFBSyxDQUFBO1FBQzlCLE1BQU0sYUFBYSxHQUF3QixFQUFFLENBQUEsQ0FBQyxRQUFRO1FBQ3RELE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUE7UUFDdkMsTUFBTSxlQUFlLEdBQUc7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixZQUFZLEVBQUUsS0FBSzthQUNwQjtTQUNGLENBQUEsQ0FBQyxtREFBbUQ7UUFDckQsTUFBTSxVQUFVLEdBQUcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQTtRQUUxRSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxnREFBZ0Q7WUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUM3QjtRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsT0FBTztZQUNoQixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDeEIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNuQixDQUFDLENBQUM7d0JBQ0EsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTt3QkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSzt3QkFDekIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztxQkFDdEI7b0JBQ0QsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNuQixDQUFDLENBQUM7d0JBQ0EsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTt3QkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRztxQkFDdEI7b0JBQ0QsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLO1lBQ0wsVUFBVTtZQUNWLFFBQVE7U0FDVCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIn0=