@effect-app/infra 0.85.0-next.4 → 0.85.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 +3 -36
- package/_cjs/_ext/Array.cjs +2 -3
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +10 -11
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +2 -3
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.test.cjs +2 -2
- package/_cjs/api/express/makeJsonSchema.test.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +4 -6
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -23
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +2 -2
- package/_cjs/api/setupRequest.cjs +4 -5
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +4 -6
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +11 -12
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +8 -8
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -2
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +10 -11
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +5 -5
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +4 -4
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +7 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +12 -14
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -5
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +29 -31
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +5 -6
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +6 -7
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +17 -18
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +15 -16
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +16 -17
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +33 -35
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +20 -15
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +46 -49
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +18 -19
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +39 -43
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +14 -16
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +1 -1
- package/_cjs/services/Store/index.cjs +6 -7
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +1 -1
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +13 -13
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +17 -19
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +8 -9
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +9 -11
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +18 -20
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +10 -11
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +5 -5
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +17 -18
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/authorization.jwt.ts +1 -1
- package/_src/api/defaultErrorHandler.ts +2 -2
- package/_src/api/express/routing.ts.bak +8 -8
- package/_src/api/express/schema/routing.ts +59 -37
- package/_src/api/setupRequest.ts +11 -10
- package/_src/errorReporter.ts +1 -1
- package/_src/services/Emailer/Sendgrid.ts +1 -1
- package/_src/services/Operations/live.ts +5 -5
- package/_src/services/QueueMaker/errors.ts +1 -1
- package/_src/services/QueueMaker/memQueue.ts +2 -2
- package/_src/services/QueueMaker/sbqueue.ts +1 -1
- package/_src/services/Repository.ts +9 -9
- package/_src/services/RepositoryBase.ts +6 -8
- package/_src/services/RequestContextContainer.ts +12 -7
- package/_src/services/Store/Cosmos.ts +12 -17
- package/_src/services/Store/Disk.ts +4 -4
- package/_src/services/Store/Memory.ts +4 -4
- package/_src/services/Store/Redis.ts +1 -1
- package/_src/services/Store/index.test.ts.bak +5 -5
- package/_src/services/Store/index.ts +1 -1
- package/_src/services/Store/utils.ts +16 -16
- package/_src/services/simpledb/diskdb.ts +1 -1
- package/_src/services/simpledb/memdb.ts +1 -1
- package/_src/services/simpledb/redisdb.ts +1 -1
- package/_src/services/simpledb/shared.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +3 -3
- package/dist/RequestContext.d.ts +4 -4
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +3 -4
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/codec.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.d.ts +2 -2
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +11 -13
- package/dist/api/express/makeJsonSchema.d.ts +2 -2
- package/dist/api/express/makeJsonSchema.d.ts.map +1 -1
- package/dist/api/express/makeJsonSchema.js +3 -4
- package/dist/api/express/makeOpenApiSpecs.d.ts +1 -1
- package/dist/api/express/makeOpenApiSpecs.js +5 -7
- package/dist/api/express/schema/routing.d.ts +22 -7
- package/dist/api/express/schema/routing.d.ts.map +1 -1
- package/dist/api/express/schema/routing.js +23 -24
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +2 -2
- package/dist/api/setupRequest.d.ts +2 -2
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +7 -7
- package/dist/api/writeDocs.d.ts +1 -1
- package/dist/api/writeDocs.d.ts.map +1 -1
- package/dist/api/writeDocs.js +5 -7
- package/dist/errorReporter.d.ts +3 -3
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +12 -13
- package/dist/errors.d.ts +7 -7
- package/dist/errors.js +9 -9
- package/dist/instrument.d.ts +1 -1
- package/dist/instrument.d.ts.map +1 -1
- package/dist/instrument.js +2 -3
- package/dist/logger/jsonLogger.d.ts +2 -2
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +11 -12
- package/dist/logger/logFmtLogger.d.ts +2 -2
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +6 -6
- package/dist/logger/shared.d.ts +1 -1
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +5 -5
- package/dist/rateLimit.d.ts +3 -3
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +8 -9
- package/dist/services/Emailer/Sendgrid.d.ts +1 -1
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +15 -17
- package/dist/services/Emailer/fake.d.ts +1 -1
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +5 -6
- package/dist/services/Emailer/service.d.ts +3 -3
- package/dist/services/Operations/live.d.ts +1 -1
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +37 -39
- package/dist/services/Operations/service.d.ts +8 -8
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +12 -13
- package/dist/services/QueueMaker/errors.d.ts +3 -3
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +6 -7
- package/dist/services/QueueMaker/memQueue.d.ts +3 -3
- package/dist/services/QueueMaker/memQueue.js +16 -17
- package/dist/services/QueueMaker/sbqueue.d.ts +4 -4
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +15 -16
- package/dist/services/Repository.d.ts +42 -42
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +17 -18
- package/dist/services/RepositoryBase.d.ts +12 -11
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +35 -37
- package/dist/services/RequestContextContainer.d.ts +14 -11
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +19 -18
- package/dist/services/Store/Cosmos.d.ts +3 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +51 -54
- package/dist/services/Store/Disk.d.ts +3 -3
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +19 -20
- package/dist/services/Store/Memory.d.ts +5 -5
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +41 -45
- package/dist/services/Store/Redis.d.ts +3 -3
- package/dist/services/Store/Redis.d.ts.map +1 -1
- package/dist/services/Store/Redis.js +15 -17
- package/dist/services/Store/index.d.ts +1 -1
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +7 -8
- package/dist/services/Store/service.d.ts +8 -8
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +2 -2
- package/dist/services/Store/utils.d.ts +2 -2
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +21 -21
- package/dist/services/simpledb/cosmosdb.d.ts +5 -5
- package/dist/services/simpledb/cosmosdb.js +17 -19
- package/dist/services/simpledb/diskdb.d.ts +4 -4
- package/dist/services/simpledb/diskdb.js +9 -10
- package/dist/services/simpledb/memdb.d.ts +4 -4
- package/dist/services/simpledb/memdb.js +11 -13
- package/dist/services/simpledb/mongodb.d.ts +5 -5
- package/dist/services/simpledb/mongodb.js +14 -16
- package/dist/services/simpledb/redisdb.d.ts +4 -4
- package/dist/services/simpledb/redisdb.js +11 -12
- package/dist/services/simpledb/shared.d.ts +4 -4
- package/dist/services/simpledb/shared.js +6 -6
- package/dist/services/simpledb/simpledb.d.ts +6 -6
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +15 -16
- package/package.json +5 -25
- package/_cjs/api/express/schema/requestHandler.cjs +0 -172
- package/_cjs/api/express/schema/requestHandler.cjs.map +0 -1
- package/_cjs/api/routing.cjs +0 -278
- package/_cjs/api/routing.cjs.map +0 -1
- package/_src/api/express/schema/requestHandler.ts +0 -372
- package/_src/api/routing.ts +0 -660
- package/dist/api/express/schema/requestHandler.d.ts +0 -71
- package/dist/api/express/schema/requestHandler.d.ts.map +0 -1
- package/dist/api/express/schema/requestHandler.js +0 -140
- package/dist/api/routing.d.ts +0 -103
- package/dist/api/routing.d.ts.map +0 -1
- package/dist/api/routing.js +0 -265
|
@@ -84,7 +84,7 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
84
84
|
([i, batch]) =>
|
|
85
85
|
Effect
|
|
86
86
|
.promise(() => bulk(batch.map(([, op]) => op)))
|
|
87
|
-
.delay(Duration.
|
|
87
|
+
.delay(Duration.makeMillis(i === 0 ? 0 : 1100))
|
|
88
88
|
.flatMap((responses) =>
|
|
89
89
|
Effect.gen(function*($) {
|
|
90
90
|
const r = responses.find((x) => x.statusCode === 412 || x.statusCode === 404)
|
|
@@ -188,11 +188,10 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
const s: Store<PM, Id> = {
|
|
191
|
-
all: Effect
|
|
192
|
-
.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}))
|
|
191
|
+
all: Effect({
|
|
192
|
+
query: `SELECT * FROM ${name} f WHERE f.id != @id`,
|
|
193
|
+
parameters: [{ name: "@id", value: importedMarkerId }]
|
|
194
|
+
})
|
|
196
195
|
.tap((q) => logQuery(q))
|
|
197
196
|
.flatMap((q) =>
|
|
198
197
|
Effect.promise(() =>
|
|
@@ -212,8 +211,7 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
212
211
|
filter
|
|
213
212
|
.keys
|
|
214
213
|
.forEachEffect((k) =>
|
|
215
|
-
Effect
|
|
216
|
-
.sync(() => buildFilterJoinSelectCosmosQuery(filter, k, name, cursor?.skip, cursor?.limit))
|
|
214
|
+
Effect(buildFilterJoinSelectCosmosQuery(filter, k, name, cursor?.skip, cursor?.limit))
|
|
217
215
|
.tap((q) => logQuery(q))
|
|
218
216
|
.flatMap((q) =>
|
|
219
217
|
Effect.promise(() =>
|
|
@@ -251,8 +249,7 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
251
249
|
? filter
|
|
252
250
|
.keys
|
|
253
251
|
.forEachEffect((k) =>
|
|
254
|
-
Effect
|
|
255
|
-
.sync(() => buildFindJoinCosmosQuery(filter, k, name, skip, limit))
|
|
252
|
+
Effect(buildFindJoinCosmosQuery(filter, k, name, skip, limit))
|
|
256
253
|
.tap((q) => logQuery(q))
|
|
257
254
|
.flatMap((q) =>
|
|
258
255
|
Effect.promise(() =>
|
|
@@ -265,8 +262,7 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
265
262
|
)
|
|
266
263
|
)
|
|
267
264
|
.map((_) => _.flatMap((_) => _))
|
|
268
|
-
: Effect
|
|
269
|
-
.sync(() => buildCosmosQuery(filter, name, importedMarkerId, skip, limit))
|
|
265
|
+
: Effect(buildCosmosQuery(filter, name, importedMarkerId, skip, limit))
|
|
270
266
|
.tap((q) => logQuery(q))
|
|
271
267
|
.flatMap((q) =>
|
|
272
268
|
Effect.promise(() =>
|
|
@@ -329,10 +325,10 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
329
325
|
)
|
|
330
326
|
)
|
|
331
327
|
}
|
|
332
|
-
return Effect
|
|
328
|
+
return Effect({
|
|
333
329
|
...e,
|
|
334
330
|
_etag: x.etag
|
|
335
|
-
})
|
|
331
|
+
})
|
|
336
332
|
})
|
|
337
333
|
.instrument("cosmos.set")
|
|
338
334
|
.annotateLogs("cosmos.db", containerId),
|
|
@@ -360,14 +356,13 @@ export function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
360
356
|
if (seed) {
|
|
361
357
|
const m = yield* $(seed)
|
|
362
358
|
yield* $(
|
|
363
|
-
Effect
|
|
364
|
-
.sync(() => m.toNonEmptyArray)
|
|
359
|
+
Effect(m.toNonEmptyArray)
|
|
365
360
|
.flatMapOpt((a) =>
|
|
366
361
|
s
|
|
367
362
|
.bulkSet(a)
|
|
368
363
|
.orDie
|
|
369
364
|
// we delay extra here, so that initial creation between Companies/POs also have an interval between them.
|
|
370
|
-
.delay(Duration.
|
|
365
|
+
.delay(Duration.makeMillis(1100))
|
|
371
366
|
)
|
|
372
367
|
)
|
|
373
368
|
}
|
|
@@ -39,7 +39,7 @@ function makeDiskStoreInt<Id extends string, PM extends PersistenceModelType<Id>
|
|
|
39
39
|
const withPermit = sem.withPermits(1)
|
|
40
40
|
const flushToDisk = store.all.flatMap(fsStore.setRaw).apply(withPermit)
|
|
41
41
|
const flushToDiskInBackground = flushToDisk
|
|
42
|
-
.tapErrorCause((err) => Effect
|
|
42
|
+
.tapErrorCause((err) => Effect(console.error(err)))
|
|
43
43
|
.uninterruptible
|
|
44
44
|
.forkDaemon
|
|
45
45
|
|
|
@@ -84,10 +84,10 @@ export function makeDiskStore({ prefix }: StorageConfig, dir: string) {
|
|
|
84
84
|
const storesSem = Semaphore.unsafeMake(1)
|
|
85
85
|
const primary = yield* $(makeDiskStoreInt(prefix, "primary", dir, name, seed))
|
|
86
86
|
const stores = new Map<string, Store<PM, Id>>([["primary", primary]])
|
|
87
|
-
const getStore = !config?.allowNamespace ? Effect.
|
|
87
|
+
const getStore = !config?.allowNamespace ? Effect.succeed(primary) : storeId.get.flatMap((namespace) => {
|
|
88
88
|
const store = stores.get(namespace)
|
|
89
89
|
if (store) {
|
|
90
|
-
return Effect.
|
|
90
|
+
return Effect.succeed(store)
|
|
91
91
|
}
|
|
92
92
|
if (!config.allowNamespace!(namespace)) {
|
|
93
93
|
throw new Error(`Namespace ${namespace} not allowed!`)
|
|
@@ -95,7 +95,7 @@ export function makeDiskStore({ prefix }: StorageConfig, dir: string) {
|
|
|
95
95
|
return storesSem.withPermits(1)(
|
|
96
96
|
Effect.suspend(() => {
|
|
97
97
|
const existing = stores.get(namespace)
|
|
98
|
-
if (existing) return Effect
|
|
98
|
+
if (existing) return Effect(existing)
|
|
99
99
|
return makeDiskStoreInt<Id, PM>(prefix, namespace, dir, name, seed).tap((store) =>
|
|
100
100
|
Effect.sync(() => stores.set(namespace, store))
|
|
101
101
|
)
|
|
@@ -47,7 +47,7 @@ export function makeMemoryStoreInt<Id extends string, PM extends PersistenceMode
|
|
|
47
47
|
) {
|
|
48
48
|
return Effect.gen(function*($) {
|
|
49
49
|
const updateETag = makeUpdateETag(name)
|
|
50
|
-
const items_ = yield* $(seed ?? Effect
|
|
50
|
+
const items_ = yield* $(seed ?? Effect([]))
|
|
51
51
|
const items = new Map(items_.toChunk.map((_) => [_.id, _] as const))
|
|
52
52
|
const makeStore = (): ReadonlyMap<Id, PM> => new Map([...items.entries()].map(([id, e]) => [id, makeETag(e)]))
|
|
53
53
|
const store = Ref.unsafeMake(makeStore())
|
|
@@ -108,17 +108,17 @@ export const makeMemoryStore = () => ({
|
|
|
108
108
|
const storesSem = Semaphore.unsafeMake(1)
|
|
109
109
|
const primary = yield* $(makeMemoryStoreInt<Id, PM>(name, seed))
|
|
110
110
|
const stores = new Map([["primary", primary]])
|
|
111
|
-
const getStore = !config?.allowNamespace ? Effect.
|
|
111
|
+
const getStore = !config?.allowNamespace ? Effect.succeed(primary) : storeId.get.flatMap((namespace) => {
|
|
112
112
|
const store = stores.get(namespace)
|
|
113
113
|
if (store) {
|
|
114
|
-
return Effect.
|
|
114
|
+
return Effect.succeed(store)
|
|
115
115
|
}
|
|
116
116
|
if (!config.allowNamespace!(namespace)) {
|
|
117
117
|
throw new Error(`Namespace ${namespace} not allowed!`)
|
|
118
118
|
}
|
|
119
119
|
return storesSem.withPermits(1)(Effect.suspend(() => {
|
|
120
120
|
const store = stores.get(namespace)
|
|
121
|
-
if (store) return Effect
|
|
121
|
+
if (store) return Effect(store)
|
|
122
122
|
return makeMemoryStoreInt(name, seed).tap((store) => Effect.sync(() => stores.set(namespace, store)))
|
|
123
123
|
}))
|
|
124
124
|
})
|
|
@@ -22,7 +22,7 @@ export function makeRedisStore({ prefix }: StorageConfig) {
|
|
|
22
22
|
const key = `${prefix}${name}`
|
|
23
23
|
const current = yield* $(redis.get(key).orDie.provideService(RedisClient, redis))
|
|
24
24
|
if (!current.isSome()) {
|
|
25
|
-
const m = yield* $(seed ?? Effect
|
|
25
|
+
const m = yield* $(seed ?? Effect([]))
|
|
26
26
|
yield* $(
|
|
27
27
|
redis
|
|
28
28
|
.set(key, JSON.stringify({ data: [...m].map((e) => makeETag(e)) }))
|
|
@@ -17,7 +17,7 @@ describe("Optimistic Concurrency", () => {
|
|
|
17
17
|
{ _etag: string | undefined; id: string; a: string }
|
|
18
18
|
>()
|
|
19
19
|
const { make } = makeMemoryStore()
|
|
20
|
-
const store = yield* $(make("test", Effect
|
|
20
|
+
const store = yield* $(make("test", Effect(existing)))
|
|
21
21
|
|
|
22
22
|
const result1 = yield* $(store.set({ id: "1", a: "string", _etag: undefined }))
|
|
23
23
|
const result2_1 = yield* $(
|
|
@@ -51,7 +51,7 @@ describe("Optimistic Concurrency", () => {
|
|
|
51
51
|
{ _etag: string | undefined; id: string; a: string }
|
|
52
52
|
>()
|
|
53
53
|
const { make } = makeMemoryStore()
|
|
54
|
-
const store = yield* $(make("test", Effect
|
|
54
|
+
const store = yield* $(make("test", Effect(existing)))
|
|
55
55
|
|
|
56
56
|
const [result1] = yield* $(
|
|
57
57
|
store.bulkSet([{ id: "1", a: "string", _etag: undefined }])
|
|
@@ -89,7 +89,7 @@ describe("Optimistic Concurrency", () => {
|
|
|
89
89
|
{ _etag: string | undefined; id: string; a: string }
|
|
90
90
|
>()
|
|
91
91
|
const { make } = makeMemoryStore()
|
|
92
|
-
const store = yield* $(make("test", Effect
|
|
92
|
+
const store = yield* $(make("test", Effect(existing)))
|
|
93
93
|
|
|
94
94
|
const item1 = { id: "1", a: "string", _etag: undefined }
|
|
95
95
|
const item2 = { id: "2", a: "string", _etag: undefined }
|
|
@@ -102,8 +102,8 @@ describe("Optimistic Concurrency", () => {
|
|
|
102
102
|
const failResult = yield* $(
|
|
103
103
|
store.batchSet([{ id: "1", a: "another-string3", _etag: "abc" }]).result
|
|
104
104
|
)
|
|
105
|
-
expect(result1).toEqual(Option
|
|
106
|
-
expect(result2).toEqual(Option
|
|
105
|
+
expect(result1).toEqual(Option({ ...item1, _etag: expect.any(String) }))
|
|
106
|
+
expect(result2).toEqual(Option({ ...item2, _etag: expect.any(String) }))
|
|
107
107
|
expect(Exit.untraced(failResult)).toEqual(
|
|
108
108
|
Exit.fail(new OptimisticConcurrencyException("test", "1"))
|
|
109
109
|
)
|
|
@@ -20,7 +20,7 @@ export function StoreMakerLive(config: Config<StorageConfig>) {
|
|
|
20
20
|
const storageUrl = cfg.url.value
|
|
21
21
|
if (storageUrl.startsWith("mem://")) {
|
|
22
22
|
console.log("Using in memory store")
|
|
23
|
-
return Effect
|
|
23
|
+
return Effect(makeMemoryStore())
|
|
24
24
|
}
|
|
25
25
|
if (storageUrl.startsWith("disk://")) {
|
|
26
26
|
const dir = storageUrl.replace("disk://", "")
|
|
@@ -41,19 +41,19 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
41
41
|
filter.type === "startsWith"
|
|
42
42
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
43
|
? lowercaseIfString((x as any)[filter.by]).startsWith(filter.value.toLowerCase())
|
|
44
|
-
? Option
|
|
45
|
-
: Option.none
|
|
44
|
+
? Option(x as unknown as NE)
|
|
45
|
+
: Option.none
|
|
46
46
|
: filter.type === "endsWith"
|
|
47
47
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
48
|
? lowercaseIfString((x as any)[filter.by]).endsWith(filter.value.toLowerCase())
|
|
49
|
-
? Option
|
|
50
|
-
: Option.none
|
|
49
|
+
? Option(x as unknown as NE)
|
|
50
|
+
: Option.none
|
|
51
51
|
: filter.type === "contains"
|
|
52
52
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
53
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
54
54
|
? lowercaseIfString((x as any)[filter.by]).includes(filter.value.toLowerCase())
|
|
55
|
-
? Option
|
|
56
|
-
: Option.none
|
|
55
|
+
? Option(x as unknown as NE)
|
|
56
|
+
: Option.none
|
|
57
57
|
: filter.type === "join_find"
|
|
58
58
|
? filter.keys.some((k) => {
|
|
59
59
|
const value = get(x, k) as Record<string, unknown>[]
|
|
@@ -63,8 +63,8 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
63
63
|
&& value.some((v) => compareCaseInsensitive(v[filter.valueKey], filter.value))
|
|
64
64
|
)
|
|
65
65
|
})
|
|
66
|
-
? Option
|
|
67
|
-
: Option.none
|
|
66
|
+
? Option(x as unknown as NE)
|
|
67
|
+
: Option.none
|
|
68
68
|
// TODO: support mixed or/and
|
|
69
69
|
: filter.mode === "or"
|
|
70
70
|
? filter
|
|
@@ -101,8 +101,8 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
101
101
|
return compareCaseInsensitive(k, p.value)
|
|
102
102
|
}
|
|
103
103
|
})
|
|
104
|
-
? Option
|
|
105
|
-
: Option.none
|
|
104
|
+
? Option(x as unknown as NE)
|
|
105
|
+
: Option.none
|
|
106
106
|
: filter
|
|
107
107
|
.where
|
|
108
108
|
.every((p) => {
|
|
@@ -145,8 +145,8 @@ export function codeFilter<E extends { id: string }, NE extends E>(filter: Filte
|
|
|
145
145
|
: compareCaseInsensitive(k, p.value)
|
|
146
146
|
}
|
|
147
147
|
})
|
|
148
|
-
? Option
|
|
149
|
-
: Option.none
|
|
148
|
+
? Option(x as unknown as NE)
|
|
149
|
+
: Option.none
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
export function codeFilterJoinSelect<E extends { id: string }, NE>(
|
|
@@ -159,15 +159,15 @@ export function codeFilterJoinSelect<E extends { id: string }, NE>(
|
|
|
159
159
|
const value = get(x, k)
|
|
160
160
|
// we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
|
|
161
161
|
return value
|
|
162
|
-
? Option
|
|
162
|
+
? Option(
|
|
163
163
|
(value as readonly NE[]).filterMap((v) =>
|
|
164
164
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
165
165
|
compareCaseInsensitive((v as any)[filter.valueKey], filter.value)
|
|
166
|
-
? Option
|
|
167
|
-
: Option.none
|
|
166
|
+
? Option({ ...v, _rootId: x.id })
|
|
167
|
+
: Option.none
|
|
168
168
|
)
|
|
169
169
|
)
|
|
170
|
-
: Option.none
|
|
170
|
+
: Option.none
|
|
171
171
|
})
|
|
172
172
|
.flatMap((_) => _)
|
|
173
173
|
}
|
|
@@ -133,7 +133,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
133
133
|
function tryRead(filePath: string) {
|
|
134
134
|
return fu
|
|
135
135
|
.fileExists(filePath)
|
|
136
|
-
.flatMap((exists) => !exists ? Effect
|
|
136
|
+
.flatMap((exists) => !exists ? Effect(Option.none) : readFile(filePath).map(Option.some))
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
function getFilename(type: string, id: string) {
|
|
@@ -64,7 +64,7 @@ export function getRecordName(type: string, id: string) {
|
|
|
64
64
|
export function makeMap<TKey, T>() {
|
|
65
65
|
const map = new Map<TKey, T>()
|
|
66
66
|
return {
|
|
67
|
-
find: (k: TKey) => Effect
|
|
67
|
+
find: (k: TKey) => Effect(Option.fromNullable(map.get(k))),
|
|
68
68
|
[Symbol.iterator]: () => map[Symbol.iterator](),
|
|
69
69
|
set: (k: TKey, v: T) =>
|
|
70
70
|
Effect.sync(() => {
|
|
@@ -28,7 +28,7 @@ export interface RecordCache extends ReturnType<typeof makeLiveRecordCache> {}
|
|
|
28
28
|
// module tag
|
|
29
29
|
export const RecordCache = Tag<RecordCache>()
|
|
30
30
|
|
|
31
|
-
export const LiveRecordCache = Effect
|
|
31
|
+
export const LiveRecordCache = Effect(makeLiveRecordCache()).toLayer(RecordCache)
|
|
32
32
|
|
|
33
33
|
const getM = <T>(type: string) => <R, E, A>(eff: (m: EffectMap<string, CachedRecord<T>>) => Effect<R, E, A>) =>
|
|
34
34
|
Effect.gen(function*($) {
|
|
@@ -90,7 +90,7 @@ export function store<R, E, R2, E2, TKey extends string, EA, A extends DBRecord<
|
|
|
90
90
|
c
|
|
91
91
|
.find(record.id)
|
|
92
92
|
.mapOpt((x) => x.version)
|
|
93
|
-
.flatMap((_) => _.match({ onNone: () => save(record, Option.none
|
|
93
|
+
.flatMap((_) => _.match({ onNone: () => save(record, Option.none), onSome: confirmVersionAndSave(record) }))
|
|
94
94
|
.tap((r) => c.set(record.id, r))
|
|
95
95
|
.map((r) => r.data)
|
|
96
96
|
)
|
|
@@ -110,7 +110,7 @@ export function store<R, E, R2, E2, TKey extends string, EA, A extends DBRecord<
|
|
|
110
110
|
? new OptimisticLockException(type, record.id)
|
|
111
111
|
: Effect.unit
|
|
112
112
|
)
|
|
113
|
-
.zipRight(save(record, Option
|
|
113
|
+
.zipRight(save(record, Option(cv)))
|
|
114
114
|
)
|
|
115
115
|
.scoped
|
|
116
116
|
}
|
package/dist/RequestContext.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ declare const RequestContextParent_base: import("@effect-app/schema").MNModel<im
|
|
|
5
5
|
id: import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>>> & {
|
|
6
6
|
EParser: import("@effect-app/schema/custom/_parser").Parser<string, any, RequestId>;
|
|
7
7
|
make: () => RequestId;
|
|
8
|
-
eq: import("effect").Equivalence<RequestId>;
|
|
8
|
+
eq: import("effect/Equivalence").Equivalence<RequestId>;
|
|
9
9
|
withDefault: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>>, "required", import("effect/Option").None<any>, import("effect/Option").Some<["constructor", () => RequestId]>>;
|
|
10
10
|
};
|
|
11
11
|
name: import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>;
|
|
@@ -20,7 +20,7 @@ declare const RequestContextParent_base: import("@effect-app/schema").MNModel<im
|
|
|
20
20
|
sub: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>>> & {
|
|
21
21
|
EParser: import("@effect-app/schema/custom/_parser").Parser<string, any, UserProfileId>;
|
|
22
22
|
make: () => UserProfileId;
|
|
23
|
-
eq: import("effect").Equivalence<UserProfileId>;
|
|
23
|
+
eq: import("effect/Equivalence").Equivalence<UserProfileId>;
|
|
24
24
|
withDefault: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>>, "required", import("effect/Option").None<any>, import("effect/Option").Some<["constructor", () => UserProfileId]>>;
|
|
25
25
|
}, "required", import("effect/Option").None<any>, import("effect/Option").None<any>>;
|
|
26
26
|
}>;
|
|
@@ -35,7 +35,7 @@ declare const RequestContext_base: import("@effect-app/schema").MNModel<import("
|
|
|
35
35
|
rootId: import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>>> & {
|
|
36
36
|
EParser: import("@effect-app/schema/custom/_parser").Parser<string, any, RequestId>;
|
|
37
37
|
make: () => RequestId;
|
|
38
|
-
eq: import("effect").Equivalence<RequestId>;
|
|
38
|
+
eq: import("effect/Equivalence").Equivalence<RequestId>;
|
|
39
39
|
withDefault: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, RequestId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<RequestId>>, "required", import("effect/Option").None<any>, import("effect/Option").Some<["constructor", () => RequestId]>>;
|
|
40
40
|
};
|
|
41
41
|
parent: import("@effect-app/schema").Property<import("@effect-app/schema").Schema<unknown, RequestContextParent, RequestContextParent.ConstructorInput, RequestContextParent.Encoded, {
|
|
@@ -55,7 +55,7 @@ declare const RequestContext_base: import("@effect-app/schema").MNModel<import("
|
|
|
55
55
|
sub: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>>> & {
|
|
56
56
|
EParser: import("@effect-app/schema/custom/_parser").Parser<string, any, UserProfileId>;
|
|
57
57
|
make: () => UserProfileId;
|
|
58
|
-
eq: import("effect").Equivalence<UserProfileId>;
|
|
58
|
+
eq: import("effect/Equivalence").Equivalence<UserProfileId>;
|
|
59
59
|
withDefault: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, UserProfileId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId> & import("@effect-app/schema").ApiSelfType<UserProfileId>>, "required", import("effect/Option").None<any>, import("effect/Option").Some<["constructor", () => UserProfileId]>>;
|
|
60
60
|
}, "required", import("effect/Option").None<any>, import("effect/Option").None<any>>;
|
|
61
61
|
}>;
|
package/dist/_ext/Array.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { NotFoundError } from "../errors.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function getFirstById_<A extends {
|
|
12
12
|
id: Id;
|
|
13
|
-
}, Id extends string, Type extends string>(a: Iterable<A>, id: Id, type: Type): import("effect").Effect<never, NotFoundError<Type>, A>;
|
|
13
|
+
}, Id extends string, Type extends string>(a: Iterable<A>, id: Id, type: Type): import("effect/Effect").Effect<never, NotFoundError<Type>, A>;
|
|
14
14
|
/**
|
|
15
15
|
* @tsplus fluent Object.Ops inspect
|
|
16
16
|
* @tsplus location "@effect-app/infra/_ext/Array"
|
package/dist/_ext/Array.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../_src/_ext/Array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;;;;;;;;;AAS5C,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,EACxF,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EACd,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../_src/_ext/Array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;;;;;;;;;AAS5C,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,EAAE,EAAE,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,EACxF,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EACd,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,iEAMX;;;;;AAKD,wBAAgB,aAAa,CAAC,EAAE,SAAS,MAAM,EAC7C,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAChB,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,EAChC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,UAG5B"}
|
package/dist/_ext/Array.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Chunk";
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
3
|
-
import * as tsplus_module_3 from "@effect-app/prelude/_ext/misc";
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/prelude/_ext/misc";
|
|
4
3
|
import { inspect } from "util";
|
|
5
4
|
import { NotFoundError } from "../errors.js";
|
|
6
5
|
/**
|
|
@@ -11,7 +10,7 @@ import { NotFoundError } from "../errors.js";
|
|
|
11
10
|
* @tsplus fluent ReadonlyArray getFirstById
|
|
12
11
|
*/
|
|
13
12
|
export function getFirstById_(a, id, type) {
|
|
14
|
-
return
|
|
13
|
+
return tsplus_module_2.encaseMaybeInEffect_(tsplus_module_1.findFirst(tsplus_module_1.fromIterable(a), (_) => _.id === id), () => new NotFoundError({ type, id }));
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
17
16
|
* @tsplus fluent Object.Ops inspect
|
|
@@ -19,4 +18,4 @@ export function getFirstById_(a, id, type) {
|
|
|
19
18
|
export function RecordInspect(o, showHidden, depth, color) {
|
|
20
19
|
return inspect(o.subject, showHidden, depth, color);
|
|
21
20
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL19leHQvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsQ0FBYyxFQUNkLEVBQU0sRUFDTixJQUFVO0lBRVYsT0FBTyxxQ0FBQSwwQkFBQSw2QkFDUyxDQUFDLENBQUMsRUFDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDZCxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDMUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsQ0FBZ0IsRUFDaEIsVUFBZ0MsRUFDaEMsS0FBaUMsRUFDakMsS0FBMkI7SUFFM0IsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JELENBQUMifQ==
|
package/dist/api/codec.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import * as MO from "@effect-app/schema";
|
|
|
2
2
|
import { Encoder, Parser } from "@effect-app/schema";
|
|
3
3
|
export declare function makeCodec<ParsedShape extends {
|
|
4
4
|
id: Id;
|
|
5
|
-
}, ConstructorInput, Encoded, Api, Id>(self: MO.Schema<unknown, ParsedShape, ConstructorInput, Encoded, Api>): readonly [(a: unknown, env?: Parser.ParserEnv | undefined) => import("effect").Effect<never, never, ParsedShape>, Encoder.Encoder<ParsedShape, Encoded>];
|
|
5
|
+
}, ConstructorInput, Encoded, Api, Id>(self: MO.Schema<unknown, ParsedShape, ConstructorInput, Encoded, Api>): readonly [(a: unknown, env?: Parser.ParserEnv | undefined) => import("effect/Effect").Effect<never, never, ParsedShape>, Encoder.Encoder<ParsedShape, Encoded>];
|
|
6
6
|
//# sourceMappingURL=codec.d.ts.map
|
package/dist/api/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../_src/api/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAgB,SAAS,CACvB,WAAW,SAAS;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,EAC9B,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,EAAE,EACF,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../_src/api/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEpD,wBAAgB,SAAS,CACvB,WAAW,SAAS;IAAE,EAAE,EAAE,EAAE,CAAA;CAAE,EAC9B,gBAAgB,EAChB,OAAO,EACP,GAAG,EACH,EAAE,EACF,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,mKAKtE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect/Effect";
|
|
2
2
|
import type { SupportedErrors, ValidationError } from "@effect-app/prelude/client/errors";
|
|
3
3
|
import type express from "express";
|
|
4
|
-
export declare function defaultBasicErrorHandler<R>(_req: express.Request, res: express.Response, r2: Effect<R, ValidationError, void>): import("effect").Effect<R, never, void | express.Response<any, Record<string, any>>>;
|
|
5
|
-
export declare function defaultErrorHandler<R>(req: express.Request, res: express.Response, r2: Effect<R, SupportedErrors, void>): import("effect").Effect<R, never, void | express.Response<any, Record<string, any>>>;
|
|
4
|
+
export declare function defaultBasicErrorHandler<R>(_req: express.Request, res: express.Response, r2: Effect<R, ValidationError, void>): import("effect/Effect").Effect<R, never, void | express.Response<any, Record<string, any>>>;
|
|
5
|
+
export declare function defaultErrorHandler<R>(req: express.Request, res: express.Response, r2: Effect<R, SupportedErrors, void>): import("effect/Effect").Effect<R, never, void | express.Response<any, Record<string, any>>>;
|
|
6
6
|
//# sourceMappingURL=defaultErrorHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../_src/api/defaultErrorHandler.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACzF,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAGlC,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EACrB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../_src/api/defaultErrorHandler.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACzF,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAGlC,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EACrB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,+FAerC;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,+FA0BrC"}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "effect/
|
|
3
|
-
import * as tsplus_module_3 from "effect/
|
|
4
|
-
import * as tsplus_module_4 from "effect/Schedule";
|
|
2
|
+
import * as tsplus_module_2 from "effect/Cause";
|
|
3
|
+
import * as tsplus_module_3 from "effect/Schedule";
|
|
5
4
|
import { logRequestError } from "./reportError.js";
|
|
6
5
|
export function defaultBasicErrorHandler(_req, res, r2) {
|
|
7
|
-
const sendError = (code) => (body) => tsplus_module_1.
|
|
8
|
-
return
|
|
6
|
+
const sendError = (code) => (body) => tsplus_module_1.sync(() => res.status(code).send(body));
|
|
7
|
+
return tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r2, (cause) => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_1.unit), "ValidationError", (err) => sendError(400)(err.errors))
|
|
9
8
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
10
|
-
, (err) =>
|
|
9
|
+
, (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));
|
|
11
10
|
}
|
|
12
|
-
const optimisticConcurrencySchedule =
|
|
13
|
-
&& tsplus_module_4.Schedule.recurWhile((a) => a._tag === "OptimisticConcurrencyException");
|
|
11
|
+
const optimisticConcurrencySchedule = tsplus_module_3.intersect(tsplus_module_3.recurWhile((a) => a._tag === "OptimisticConcurrencyException"))(tsplus_module_3.once);
|
|
14
12
|
export function defaultErrorHandler(req, res, r2) {
|
|
15
13
|
const r3 = req.method === "PATCH"
|
|
16
|
-
?
|
|
14
|
+
? tsplus_module_1.retry(r2, optimisticConcurrencySchedule)
|
|
17
15
|
: r2;
|
|
18
|
-
const sendError = (code) => (body) => tsplus_module_1.
|
|
19
|
-
return
|
|
16
|
+
const sendError = (code) => (body) => tsplus_module_1.sync(() => res.status(code).send(body));
|
|
17
|
+
return tsplus_module_1.catchAll(tsplus_module_1.catchTags(tsplus_module_1.tapErrorCause(r3, (cause) => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_1.unit), {
|
|
20
18
|
"ValidationError": (err) => sendError(400)(err.errors),
|
|
21
19
|
"NotFoundError": sendError(404),
|
|
22
20
|
"NotLoggedInError": sendError(401),
|
|
@@ -26,6 +24,6 @@ export function defaultErrorHandler(req, res, r2) {
|
|
|
26
24
|
"OptimisticConcurrencyException": sendError(412)
|
|
27
25
|
})
|
|
28
26
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
29
|
-
, (err) =>
|
|
27
|
+
, (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));
|
|
30
28
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL2RlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWxELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsSUFBcUIsRUFDckIsR0FBcUIsRUFDckIsRUFBb0M7SUFFcEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQywyQkFBTyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFGLE9BQU8seUJBQUEseUJBQUEsOEJBQUEsRUFBRSxFQUNRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQywwQkFBQSxLQUFLLENBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQVksQ0FBQyxFQUN6RSxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRSwrRUFBK0U7TUFDckUsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUN2Qix3QkFBQSxvQkFBQSx5QkFFSSxnR0FBZ0csR0FBRyxHQUFHLENBQ3ZHLEVBQ0ksR0FBRyxFQUFFLENBQUMsR0FBYyxDQUFDLHNCQUNOLENBQ3ZCLENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSw2QkFBNkIsNkJBQzlCLDJCQUFxQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyx1QkFBQSxDQUFBO0FBRTdGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBb0IsRUFDcEIsR0FBcUIsRUFDckIsRUFBb0M7SUFFcEMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsMkJBQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMxRixPQUFPLHlCQUFBLDBCQUFBLDhCQUFBLEVBQUUsRUFDUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDeEU7UUFDVCxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDL0Isa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUNsQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ25DLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDbkMsNElBQTRJO1FBQzVJLGdDQUFnQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUM7S0FDakQsQ0FBQztJQUNGLCtFQUErRTtNQUNyRSxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQ3ZCLHdCQUFBLG9CQUFBLHlCQUVJLGdHQUFnRyxHQUFHLEdBQUcsQ0FDdkcsRUFDSSxHQUFHLEVBQUUsQ0FBQyxHQUFjLENBQUMsc0JBQ04sQ0FDdkIsQ0FBQTtBQUNMLENBQUMifQ==
|
|
@@ -4,11 +4,11 @@ type Methods = "GET" | "PUT" | "POST" | "PATCH" | "DELETE";
|
|
|
4
4
|
export declare function checkPaths<T extends {
|
|
5
5
|
path: string;
|
|
6
6
|
method: string;
|
|
7
|
-
}>(paths: readonly T[]): import("effect").Effect<never, InvalidStateError, readonly T[]>;
|
|
7
|
+
}>(paths: readonly T[]): import("effect/Effect").Effect<never, InvalidStateError, readonly T[]>;
|
|
8
8
|
/**
|
|
9
9
|
* Work in progress JSONSchema generator.
|
|
10
10
|
*/
|
|
11
|
-
export declare function makeJsonSchema(r: Iterable<RS.RouteDescriptorAny>): import("effect").Effect<never, InvalidStateError, Record<string, Record<Methods, {
|
|
11
|
+
export declare function makeJsonSchema(r: Iterable<RS.RouteDescriptorAny>): import("effect/Effect").Effect<never, InvalidStateError, Record<string, Record<Methods, {
|
|
12
12
|
[x: string]: {
|
|
13
13
|
responses: any;
|
|
14
14
|
tags: readonly string[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeJsonSchema.d.ts","sourceRoot":"","sources":["../../../_src/api/express/makeJsonSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzC,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AA0D1D,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE,SAAS,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"makeJsonSchema.d.ts","sourceRoot":"","sources":["../../../_src/api/express/makeJsonSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzC,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AA0D1D,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE,SAAS,CAAC,EAAE,0EA2DpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;KA8BhE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "effect/Effect";
|
|
2
2
|
import * as tsplus_module_2 from "effect/Chunk";
|
|
3
3
|
import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
|
|
4
|
-
import * as tsplus_module_4 from "effect/impl/Effect";
|
|
5
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
5
|
import { InvalidStateError } from "../../errors.js";
|
|
7
6
|
import * as RS from "./schema/routing.js";
|
|
@@ -51,7 +50,7 @@ class PathsTree {
|
|
|
51
50
|
// })
|
|
52
51
|
// }
|
|
53
52
|
export function checkPaths(paths) {
|
|
54
|
-
return tsplus_module_1.
|
|
53
|
+
return tsplus_module_1.gen(function* ($) {
|
|
55
54
|
const pathMethods = new PathsTree("/");
|
|
56
55
|
const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g;
|
|
57
56
|
for (const path of paths) {
|
|
@@ -102,7 +101,7 @@ export function checkPaths(paths) {
|
|
|
102
101
|
* Work in progress JSONSchema generator.
|
|
103
102
|
*/
|
|
104
103
|
export function makeJsonSchema(r) {
|
|
105
|
-
return
|
|
104
|
+
return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkPaths), (e) => {
|
|
106
105
|
const map = ({ method, path, responses, ...rest }) => ({
|
|
107
106
|
[method]: {
|
|
108
107
|
...rest,
|
|
@@ -129,4 +128,4 @@ class Response {
|
|
|
129
128
|
this.type = type;
|
|
130
129
|
}
|
|
131
130
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFNBQVM7SUFNYixZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBRUQsb0JBQW9CO0FBQ3BCLCtCQUErQjtBQUMvQixrQkFBa0I7QUFDbEIsSUFBSTtBQUVKLDJCQUEyQjtBQUMzQiw4QkFBOEI7QUFDOUIsaUJBQWlCO0FBQ2pCLE1BQU07QUFDTixxQ0FBcUM7QUFDckMsNEJBQTRCO0FBQzVCLDJCQUEyQjtBQUMzQix1RkFBdUY7QUFDdkYseUNBQXlDO0FBQ3pDLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFDckMsMkdBQTJHO0FBQzNHLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsWUFBWTtBQUNaLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1Ysd0JBQXdCO0FBQ3hCLHNHQUFzRztBQUN0Ryw4RUFBOEU7QUFDOUUscUNBQXFDO0FBQ3JDLG1EQUFtRDtBQUNuRCw4QkFBOEI7QUFDOUIseUhBQXlIO0FBQ3pILGdCQUFnQjtBQUNoQixlQUFlO0FBQ2YsWUFBWTtBQUNaLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsUUFBUTtBQUNSLE9BQU87QUFDUCxJQUFJO0FBRUosTUFB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type * as Plutus from "@effect-app/infra-adapters/Openapi/atlas-plutus";
|
|
2
2
|
import type { RouteDescriptorAny } from "./schema/routing.js";
|
|
3
|
-
export declare function makeOpenApiSpecs(rdescs: Iterable<RouteDescriptorAny>, info: Plutus.Info): import("effect").Effect<never, import("../../errors.js").InvalidStateError, {
|
|
3
|
+
export declare function makeOpenApiSpecs(rdescs: Iterable<RouteDescriptorAny>, info: Plutus.Info): import("effect/Effect").Effect<never, import("../../errors.js").InvalidStateError, {
|
|
4
4
|
openapi: string;
|
|
5
5
|
info: {
|
|
6
6
|
title: string;
|