@effect-app/infra 0.170.6 → 0.172.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/_cjs/services/Operations/live.cjs +8 -9
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs +70 -0
- package/_cjs/services/Repository/dsl.cjs.map +1 -0
- package/_cjs/services/Repository/ext.cjs +217 -0
- package/_cjs/services/Repository/ext.cjs.map +1 -0
- package/_cjs/services/Repository/service.cjs +6 -0
- package/_cjs/services/Repository/service.cjs.map +1 -0
- package/_cjs/services/Repository.cjs +32 -252
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +173 -48
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +13 -14
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +9 -10
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.cjs +2 -2
- package/_cjs/services/Store/utils.cjs +8 -9
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +1 -2
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +5 -6
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/express/schema/routing.ts +6 -6
- package/_src/services/Operations/live.ts +1 -1
- package/_src/services/Repository/dsl.ts +137 -0
- package/_src/services/Repository/ext.ts +707 -0
- package/_src/services/Repository/service.ts +12 -0
- package/_src/services/Repository.ts +3 -815
- package/_src/services/RepositoryBase.ts +621 -4
- package/_src/services/RequestContextContainer.ts +1 -1
- package/_src/services/Store/ContextMapContainer.ts +1 -1
- package/_src/services/Store/codeFilter.ts +2 -2
- package/_src/services/Store/utils.ts +9 -9
- package/_src/services/simpledb/diskdb.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +1 -1
- package/dist/services/Operations/live.js +9 -10
- package/dist/services/QueueMaker/service.d.ts +2 -2
- package/dist/services/Repository/dsl.d.ts +51 -0
- package/dist/services/Repository/dsl.d.ts.map +1 -0
- package/dist/services/Repository/dsl.js +55 -0
- package/dist/services/Repository/ext.d.ts +324 -0
- package/dist/services/Repository/ext.d.ts.map +1 -0
- package/dist/services/Repository/ext.js +180 -0
- package/dist/services/Repository/service.d.ts +10 -0
- package/dist/services/Repository/service.d.ts.map +1 -0
- package/dist/services/Repository/service.js +2 -0
- package/dist/services/Repository.d.ts +3 -363
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +4 -217
- package/dist/services/RepositoryBase.d.ts +241 -6
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +164 -48
- package/dist/services/RequestContextContainer.js +14 -15
- package/dist/services/Store/ContextMapContainer.js +10 -11
- package/dist/services/Store/codeFilter.js +3 -3
- package/dist/services/Store/utils.js +10 -11
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.d.ts +1 -1
- package/dist/services/simpledb/diskdb.js +2 -3
- package/dist/services/simpledb/memdb.d.ts +1 -1
- package/dist/services/simpledb/redisdb.d.ts +5 -5
- package/dist/services/simpledb/shared.d.ts +5 -5
- package/dist/services/simpledb/simpledb.d.ts +2 -2
- package/dist/services/simpledb/simpledb.js +5 -6
- package/package.json +37 -7
|
@@ -15,7 +15,6 @@ exports.makeUpdateETag = exports.makeETag = void 0;
|
|
|
15
15
|
var tsplus_module_1 = _interopRequireWildcard(require("@effect-app/prelude/_ext/misc"));
|
|
16
16
|
var tsplus_module_2 = _interopRequireWildcard(require("effect/Option"));
|
|
17
17
|
var tsplus_module_3 = _interopRequireWildcard(require("effect/Effect"));
|
|
18
|
-
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Option"));
|
|
19
18
|
var _utils = require("@effect-app/prelude/utils");
|
|
20
19
|
var _errors = require("../../errors.cjs");
|
|
21
20
|
var _objectHash = _interopRequireDefault(require("object-hash"));
|
|
@@ -53,18 +52,18 @@ const makeUpdateETag = type => (e, current) => tsplus_module_3.gen(function* ($)
|
|
|
53
52
|
});
|
|
54
53
|
exports.makeUpdateETag = makeUpdateETag;
|
|
55
54
|
function codeFilter(filter) {
|
|
56
|
-
return x => filter.type === "new-kid" ? (0, _codeFilter.codeFilter3_)(filter.build(), x) ? tsplus_module_2.some(x) :
|
|
55
|
+
return x => filter.type === "new-kid" ? (0, _codeFilter.codeFilter3_)(filter.build(), x) ? tsplus_module_2.some(x) : tsplus_module_2.none() : filter.type === "startsWith"
|
|
57
56
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
-
? lowercaseIfString(x[filter.by]).startsWith(filter.value.toLowerCase()) ? tsplus_module_2.some(x) :
|
|
57
|
+
? lowercaseIfString(x[filter.by]).startsWith(filter.value.toLowerCase()) ? tsplus_module_2.some(x) : tsplus_module_2.none() : filter.type === "endsWith"
|
|
59
58
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
-
? lowercaseIfString(x[filter.by]).endsWith(filter.value.toLowerCase()) ? tsplus_module_2.some(x) :
|
|
59
|
+
? lowercaseIfString(x[filter.by]).endsWith(filter.value.toLowerCase()) ? tsplus_module_2.some(x) : tsplus_module_2.none() : filter.type === "contains"
|
|
61
60
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
61
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
63
|
-
? lowercaseIfString(x[filter.by]).includes(filter.value.toLowerCase()) ? tsplus_module_2.some(x) :
|
|
62
|
+
? lowercaseIfString(x[filter.by]).includes(filter.value.toLowerCase()) ? tsplus_module_2.some(x) : tsplus_module_2.none() : filter.type === "join_find" ? filter.keys.some(k => {
|
|
64
63
|
const value = (0, _utils.get)(x, k);
|
|
65
64
|
// we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
|
|
66
65
|
return value && value.some(v => compare(v[filter.valueKey], filter.value));
|
|
67
|
-
}) ? tsplus_module_2.some(x) :
|
|
66
|
+
}) ? tsplus_module_2.some(x) : tsplus_module_2.none()
|
|
68
67
|
// TODO: support mixed or/and
|
|
69
68
|
: filter.mode === "or" ? filter.where.some(p => {
|
|
70
69
|
const k = (0, _utils.get)(x, p.key);
|
|
@@ -103,7 +102,7 @@ function codeFilter(filter) {
|
|
|
103
102
|
case undefined:
|
|
104
103
|
return compare(k, p.value);
|
|
105
104
|
}
|
|
106
|
-
}) ? tsplus_module_2.some(x) :
|
|
105
|
+
}) ? tsplus_module_2.some(x) : tsplus_module_2.none() : filter.where.every(p => {
|
|
107
106
|
const k = (0, _utils.get)(x, p.key);
|
|
108
107
|
switch (p.t) {
|
|
109
108
|
case "in":
|
|
@@ -144,7 +143,7 @@ function codeFilter(filter) {
|
|
|
144
143
|
// TODO: or vs and
|
|
145
144
|
.some(_ => compare((0, _utils.get)(_, p.key.split(".-1.")[1]), p.value)) : compare(k, p.value);
|
|
146
145
|
}
|
|
147
|
-
}) ? tsplus_module_2.some(x) :
|
|
146
|
+
}) ? tsplus_module_2.some(x) : tsplus_module_2.none();
|
|
148
147
|
}
|
|
149
148
|
function codeFilterJoinSelect(filter) {
|
|
150
149
|
return x => filter.keys.filterMap(k => {
|
|
@@ -155,7 +154,7 @@ function codeFilterJoinSelect(filter) {
|
|
|
155
154
|
compare(v[filter.valueKey], filter.value) ? tsplus_module_2.some({
|
|
156
155
|
...v,
|
|
157
156
|
_rootId: x.id
|
|
158
|
-
}) :
|
|
157
|
+
}) : tsplus_module_2.none())) : tsplus_module_2.none();
|
|
159
158
|
}).flatMap(_ => _);
|
|
160
159
|
}
|
|
161
160
|
function lowercaseIfString(val) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","names":["_utils","require","_errors","_objectHash","_interopRequireDefault","_codeFilter","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","makeETag","_etag","objectHash","exports","makeUpdateETag","type","current","tsplus_module_3","gen","$","tsplus_module_1","encaseMaybeInEffect_","OptimisticConcurrencyException","id","found","tsplus_module_2","isSome","value","newE","codeFilter","filter","x","codeFilter3_","build","some","
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":["_utils","require","_errors","_objectHash","_interopRequireDefault","_codeFilter","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","makeETag","_etag","objectHash","exports","makeUpdateETag","type","current","tsplus_module_3","gen","$","tsplus_module_1","encaseMaybeInEffect_","OptimisticConcurrencyException","id","found","tsplus_module_2","isSome","value","newE","codeFilter","filter","x","codeFilter3_","build","some","none","lowercaseIfString","by","startsWith","toLowerCase","endsWith","includes","keys","k","v","compare","valueKey","mode","where","p","key","lowerThan","lowerThanExclusive","greaterThan","greaterThanExclusive","undefined","every","split","_","codeFilterJoinSelect","filterMap","_rootId","flatMap","val","valA","valB"],"sources":["../../../_src/services/Store/utils.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ exports.createContext = createContext;
|
|
|
7
7
|
exports.initialise = initialise;
|
|
8
8
|
var tsplus_module_1 = _interopRequireWildcard(require("effect/Effect"));
|
|
9
9
|
var tsplus_module_2 = _interopRequireWildcard(require("effect/Option"));
|
|
10
|
-
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Option"));
|
|
11
10
|
var _Function = require("@effect-app/core/Function");
|
|
12
11
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
12
|
var PLF = _interopRequireWildcard(require("proper-lockfile"));
|
|
@@ -99,7 +98,7 @@ function createContext() {
|
|
|
99
98
|
return (0, _Function.pipe)(JSON.stringify(content), serialised => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
100
99
|
}
|
|
101
100
|
function tryRead(filePath) {
|
|
102
|
-
return tsplus_module_1.flatMap(fu.fileExists(filePath), exists => !exists ? tsplus_module_1.sync(() =>
|
|
101
|
+
return tsplus_module_1.flatMap(fu.fileExists(filePath), exists => !exists ? tsplus_module_1.sync(() => tsplus_module_2.none()) : tsplus_module_1.map(readFile(filePath), tsplus_module_2.some));
|
|
103
102
|
}
|
|
104
103
|
function getFilename(type, id) {
|
|
105
104
|
return `${dir}/v${schemaVersion}.${(0, _shared.getRecordName)(type, id)}.json`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskdb.cjs","names":["_Function","require","_fs","_interopRequireDefault","PLF","_interopRequireWildcard","_utils","fu","_shared","simpledb","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","createContext","type","encode","decode","schemaVersion","makeIndexKey","dir","initialise","globalLock","typeLockKey","getIdxName","fs","existsSync","writeFileSync","find","findByIndex","getIdx","save","store","lockRecordOnDisk","record","currentVersion","version","map","cv","parseInt","toString","getOrElse","getData","flow","_","tsplus_module_1","data","pretty","timestamp","Date","idx","tsplus_module_2","isSome","scoped","zipRight","lockIndex","orDie","flatMap","readIndex","x","id","fail","Error","serialised","writeTextFile","getFilename","writeIndex","key","index","lockDiskIndex","lockKey","lockIndexOnDisk","acquireRelease","mapBoth","lockFile","onFailure","err","CouldNotAquireDbLockException","onSuccess","release","l","readFile","filePath","catchAll","readTextFile","die","ConnectionException","tryRead","s","JSON","parse","fromNullable","doc","match","onNone","onSome","content","pipe","stringify","fileExists","exists","sync","
|
|
1
|
+
{"version":3,"file":"diskdb.cjs","names":["_Function","require","_fs","_interopRequireDefault","PLF","_interopRequireWildcard","_utils","fu","_shared","simpledb","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","createContext","type","encode","decode","schemaVersion","makeIndexKey","dir","initialise","globalLock","typeLockKey","getIdxName","fs","existsSync","writeFileSync","find","findByIndex","getIdx","save","store","lockRecordOnDisk","record","currentVersion","version","map","cv","parseInt","toString","getOrElse","getData","flow","_","tsplus_module_1","data","pretty","timestamp","Date","idx","tsplus_module_2","isSome","scoped","zipRight","lockIndex","orDie","flatMap","readIndex","x","id","fail","Error","serialised","writeTextFile","getFilename","writeIndex","key","index","lockDiskIndex","lockKey","lockIndexOnDisk","acquireRelease","mapBoth","lockFile","onFailure","err","CouldNotAquireDbLockException","onSuccess","release","l","readFile","filePath","catchAll","readTextFile","die","ConnectionException","tryRead","s","JSON","parse","fromNullable","doc","match","onNone","onSome","content","pipe","stringify","fileExists","exists","sync","none","some","getRecordName","getIndexName","fileName","tryPromise","lock","then","initialised","mkdirSync"],"sources":["../../../_src/services/simpledb/diskdb.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -12,8 +12,7 @@ var tsplus_module_1 = _interopRequireWildcard(require("effect/Effect"));
|
|
|
12
12
|
var tsplus_module_2 = _interopRequireWildcard(require("effect/Context"));
|
|
13
13
|
var tsplus_module_3 = _interopRequireWildcard(require("effect/Layer"));
|
|
14
14
|
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
15
|
-
var tsplus_module_5 = _interopRequireWildcard(require("
|
|
16
|
-
var tsplus_module_6 = _interopRequireWildcard(require("effect/Option"));
|
|
15
|
+
var tsplus_module_5 = _interopRequireWildcard(require("effect/Option"));
|
|
17
16
|
var _shared = require("./shared.cjs");
|
|
18
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
19
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -68,17 +67,17 @@ function storeDirectly(save, type) {
|
|
|
68
67
|
}
|
|
69
68
|
function store(tryRead, save, lock, type) {
|
|
70
69
|
const getCache = getM(type);
|
|
71
|
-
return record => getCache(c => tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_4.mapOption(c.find(record.id), x => x.version), _ =>
|
|
72
|
-
onNone: () => save(record, tsplus_module_5.none),
|
|
70
|
+
return record => getCache(c => tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_4.mapOption(c.find(record.id), x => x.version), _ => tsplus_module_5.match(_, {
|
|
71
|
+
onNone: () => save(record, tsplus_module_5.none()),
|
|
73
72
|
onSome: confirmVersionAndSave(record)
|
|
74
73
|
})).tap(r => c.set(record.id, r)), r => r.data));
|
|
75
74
|
function confirmVersionAndSave(record) {
|
|
76
|
-
return cv => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.flatMap(tryRead(record.id), _ =>
|
|
75
|
+
return cv => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.flatMap(tryRead(record.id), _ => tsplus_module_5.match(_, {
|
|
77
76
|
onNone: () => tsplus_module_1.fail(new InvalidStateError("record is gone")),
|
|
78
77
|
onSome: tsplus_module_1.succeed
|
|
79
78
|
})).tap(({
|
|
80
79
|
version
|
|
81
|
-
}) => version !== cv ? new _shared.OptimisticLockException(type, record.id) : tsplus_module_1.unit), save(record,
|
|
80
|
+
}) => version !== cv ? new _shared.OptimisticLockException(type, record.id) : tsplus_module_1.unit), save(record, tsplus_module_5.some(cv)))));
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
83
|
//# sourceMappingURL=simpledb.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpledb.cjs","names":["_shared","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","InvalidStateError","constructor","message","details","_tag","exports","makeLiveRecordCache","m","Map","type","tsplus_module_1","sync","ex","nm","makeMap","RecordCache","tsplus_module_2","GenericTag","LiveRecordCache","tsplus_module_3","effect","getM","eff","gen","$","flatMap","find","tryRead","decode","getCache","read","id","tsplus_module_4","mapOption","tapOption","flatMapOption","data","version","mapBoth","onFailure","err","onSuccess","c","orElse","existing","storeDirectly","save","record","map","x","cv","tap","store","lock","_","
|
|
1
|
+
{"version":3,"file":"simpledb.cjs","names":["_shared","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","InvalidStateError","constructor","message","details","_tag","exports","makeLiveRecordCache","m","Map","type","tsplus_module_1","sync","ex","nm","makeMap","RecordCache","tsplus_module_2","GenericTag","LiveRecordCache","tsplus_module_3","effect","getM","eff","gen","$","flatMap","find","tryRead","decode","getCache","read","id","tsplus_module_4","mapOption","tapOption","flatMapOption","data","version","mapBoth","onFailure","err","onSuccess","c","orElse","existing","storeDirectly","save","record","map","x","cv","tap","store","lock","_","tsplus_module_5","match","onNone","none","onSome","confirmVersionAndSave","scoped","zipRight","fail","succeed","OptimisticLockException","unit","some"],"sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -129,31 +129,31 @@ export function makeRouteDescriptor<
|
|
|
129
129
|
// // TODO: use the path vs body etc serialisation also in the Client.
|
|
130
130
|
// const makeReqQuerySchema = Effect.sync(() => Option.fromNullable(Req.Query)).flatMap((_) =>
|
|
131
131
|
// _.match({
|
|
132
|
-
// onNone: () => Effect.sync(() => Option.none),
|
|
132
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
133
133
|
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
134
134
|
// })
|
|
135
135
|
// )
|
|
136
136
|
// const makeReqHeadersSchema = Effect.sync(() => Option.fromNullable(Req.Headers)).flatMap((_) =>
|
|
137
137
|
// _.match({
|
|
138
|
-
// onNone: () => Effect.sync(() => Option.none),
|
|
138
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
139
139
|
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
140
140
|
// })
|
|
141
141
|
// )
|
|
142
142
|
// const makeReqCookieSchema = Effect.sync(() => Option.fromNullable(Req.Cookie)).flatMap((_) =>
|
|
143
143
|
// _.match({
|
|
144
|
-
// onNone: () => Effect.sync(() => Option.none),
|
|
144
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
145
145
|
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
146
146
|
// })
|
|
147
147
|
// )
|
|
148
148
|
// const makeReqPathSchema = Effect.sync(() => Option.fromNullable(Req.Path)).flatMap((_) =>
|
|
149
149
|
// _.match({
|
|
150
|
-
// onNone: () => Effect.sync(() => Option.none),
|
|
150
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
151
151
|
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
152
152
|
// })
|
|
153
153
|
// )
|
|
154
154
|
// const makeReqBodySchema = Effect.sync(() => Option.fromNullable(Req.Body)).flatMap((_) =>
|
|
155
155
|
// _.match({
|
|
156
|
-
// onNone: () => Effect.sync(() => Option.none),
|
|
156
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
157
157
|
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
158
158
|
// })
|
|
159
159
|
// )
|
|
@@ -164,7 +164,7 @@ export function makeRouteDescriptor<
|
|
|
164
164
|
// function makeParameters(inn: ParameterLocation) {
|
|
165
165
|
// return (a: Option<JSONSchema | SubSchema>) => {
|
|
166
166
|
// return a
|
|
167
|
-
// .flatMap((o) => (isObjectSchema(o) ? Option.some(o) : Option.none))
|
|
167
|
+
// .flatMap((o) => (isObjectSchema(o) ? Option.some(o) : Option.none()))
|
|
168
168
|
// .map((x) => {
|
|
169
169
|
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
170
170
|
// return Object.keys(x.properties!).map((p) => {
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { FixEnv, PureLogT } from "@effect-app/prelude/Pure"
|
|
2
|
+
|
|
3
|
+
export interface PureDSL<S, S2, W> {
|
|
4
|
+
get: ReturnType<typeof Pure.get<S>>
|
|
5
|
+
set: typeof Pure.set<S2>
|
|
6
|
+
log: (...w: W[]) => PureLogT<W>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const AnyPureDSL: PureDSL<any, any, any> = {
|
|
10
|
+
get: Pure.get(),
|
|
11
|
+
set: Pure.set,
|
|
12
|
+
log: (...evt: any[]) => Pure.logMany(evt)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const anyDSL = makeDSL<any, any, any>()
|
|
16
|
+
|
|
17
|
+
export type AllDSL<T, Evt> =
|
|
18
|
+
& (<R, A, E, S1 extends T, S2 extends T>(
|
|
19
|
+
pure: (dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>
|
|
20
|
+
) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>)
|
|
21
|
+
& AllDSLExt<T, Evt>
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @tsplus type DSLExt
|
|
25
|
+
*/
|
|
26
|
+
export interface AllDSLExt<T, Evt> {
|
|
27
|
+
modify: <R, E, A, S1 extends T, S2 extends T>(
|
|
28
|
+
pure: (items: S1[], dsl: PureDSL<S1[], S2[], Evt>) => Effect<A, E, R>
|
|
29
|
+
) => Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>
|
|
30
|
+
update: <R, E, S1 extends T, S2 extends T>(
|
|
31
|
+
pure: (items: S1[], log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2[], E, R>
|
|
32
|
+
) => Effect<S2[], E, FixEnv<R, Evt, S1[], S2[]>>
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function makeAllDSL<T, Evt>() {
|
|
36
|
+
const dsl: AllDSL<T, Evt> = anyDSL
|
|
37
|
+
return dsl
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type OneDSL<T, Evt> =
|
|
41
|
+
& (<R, A, E, S1 extends T, S2 extends T>(
|
|
42
|
+
pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>
|
|
43
|
+
) => Effect<A, E, FixEnv<R, Evt, S1, S2>>)
|
|
44
|
+
& OneDSLExt<T, Evt>
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @tsplus type DSLExt
|
|
48
|
+
*/
|
|
49
|
+
export interface OneDSLExt<T, Evt> {
|
|
50
|
+
modify: <R, E, A, S1 extends T, S2 extends T>(
|
|
51
|
+
pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, FixEnv<R, Evt, S1, S2>>
|
|
52
|
+
) => Effect<A, E, FixEnv<R, Evt, S1, S2> | PureEnvEnv<Evt, S1, S1>>
|
|
53
|
+
update: <R, E, S1 extends T, S2 extends T>(
|
|
54
|
+
pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>
|
|
55
|
+
) => Effect<S2, E, FixEnv<R, Evt, S1, S2>>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @tsplus fluent DSLExt updateWith
|
|
60
|
+
*/
|
|
61
|
+
export function updateWithOne<T, Evt, S1 extends T, S2 extends T>(self: OneDSL<T, Evt>, upd: (item: S1) => S2) {
|
|
62
|
+
return self.update((_: S1) => Effect.sync(() => upd(_)))
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @tsplus fluent DSLExt updateWith
|
|
67
|
+
*/
|
|
68
|
+
export function updateWith<T, Evt, S1 extends T, S2 extends T>(
|
|
69
|
+
self: AllDSL<T, Evt>,
|
|
70
|
+
upd: (item: S1[]) => S2[]
|
|
71
|
+
) {
|
|
72
|
+
return self.update((_: S1[]) => Effect.sync(() => upd(_)))
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function makeOneDSL<T, Evt>(): OneDSL<T, Evt> {
|
|
76
|
+
return anyDSL
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function makeDSL<S1, S2, Evt>() {
|
|
80
|
+
const dsl: PureDSL<S1, S2, Evt> = AnyPureDSL
|
|
81
|
+
|
|
82
|
+
function modify<
|
|
83
|
+
R,
|
|
84
|
+
E,
|
|
85
|
+
A
|
|
86
|
+
>(
|
|
87
|
+
pure: (
|
|
88
|
+
items: S1,
|
|
89
|
+
dsl: PureDSL<S1, S2, Evt>
|
|
90
|
+
) => Effect<A, E, R>
|
|
91
|
+
): Effect<A, E, FixEnv<R, Evt, S1, S2>> {
|
|
92
|
+
return dsl.get.flatMap((items) => pure(items, dsl)) as any
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function update<
|
|
96
|
+
R,
|
|
97
|
+
E
|
|
98
|
+
>(
|
|
99
|
+
pure: (
|
|
100
|
+
items: S1,
|
|
101
|
+
log: (...evt: Evt[]) => PureLogT<Evt>
|
|
102
|
+
) => Effect<S2, E, R>
|
|
103
|
+
): Effect<S2, E, FixEnv<R, Evt, S1, S2>> {
|
|
104
|
+
return dsl.get.flatMap((items) => pure(items, dsl.log).tap(dsl.set)) as any
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function withDSL<
|
|
108
|
+
R,
|
|
109
|
+
A,
|
|
110
|
+
E
|
|
111
|
+
>(
|
|
112
|
+
pure: (dsl: PureDSL<S1, S2, Evt>) => Effect<A, E, R>
|
|
113
|
+
): Effect<A, E, FixEnv<R, Evt, S1, S2>> {
|
|
114
|
+
return pure(AnyPureDSL) as any
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return Object.assign(
|
|
118
|
+
withDSL,
|
|
119
|
+
{
|
|
120
|
+
modify,
|
|
121
|
+
update
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {}
|
|
127
|
+
|
|
128
|
+
export function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>) {
|
|
129
|
+
return (items: Iterable<T>) => Effect.sync(() => items.toNonEmptyArray).flatMapOpt(fn)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @tsplus fluent Iterable ifAny
|
|
134
|
+
*/
|
|
135
|
+
export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<A, E, R>) {
|
|
136
|
+
return Effect.sync(() => items.toNonEmptyArray).flatMapOpt(fn)
|
|
137
|
+
}
|