@effect-app/infra 4.0.0-beta.13 → 4.0.0-beta.131
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 +864 -0
- package/dist/CUPS.d.ts +13 -5
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +10 -12
- package/dist/Emailer/service.d.ts +2 -2
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +3 -3
- package/dist/MainFiberSet.d.ts +2 -2
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +3 -3
- package/dist/Model/Repository/Registry.d.ts +20 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +17 -0
- package/dist/Model/Repository/ext.d.ts +21 -3
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +54 -2
- package/dist/Model/Repository/internal/internal.d.ts +4 -4
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +31 -21
- package/dist/Model/Repository/makeRepo.d.ts +6 -5
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +4 -1
- package/dist/Model/Repository/service.d.ts +27 -22
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository/validation.d.ts +59 -9
- package/dist/Model/Repository/validation.d.ts.map +1 -1
- package/dist/Model/Repository.d.ts +1 -0
- package/dist/Model/Repository.d.ts.map +1 -1
- package/dist/Model/Repository.js +2 -1
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.js +3 -3
- package/dist/Model.d.ts +1 -0
- package/dist/Model.d.ts.map +1 -1
- package/dist/Model.js +2 -1
- package/dist/Operations.d.ts +4 -4
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Operations.js +56 -59
- package/dist/OperationsRepo.d.ts +4 -4
- package/dist/OperationsRepo.d.ts.map +1 -1
- package/dist/OperationsRepo.js +3 -3
- package/dist/QueueMaker/SQLQueue.d.ts +3 -6
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +105 -114
- package/dist/QueueMaker/errors.d.ts +1 -1
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.d.ts +6 -3
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +51 -62
- package/dist/QueueMaker/sbqueue.d.ts +5 -2
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +36 -52
- package/dist/RequestContext.d.ts +51 -21
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +5 -5
- package/dist/RequestFiberSet.d.ts +2 -2
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +5 -5
- package/dist/Store/ContextMapContainer.d.ts +18 -2
- package/dist/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/Store/ContextMapContainer.js +13 -3
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +308 -242
- package/dist/Store/Disk.d.ts +1 -1
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +25 -22
- package/dist/Store/Memory.d.ts +3 -3
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +27 -22
- package/dist/Store/SQL/Pg.d.ts +4 -0
- package/dist/Store/SQL/Pg.d.ts.map +1 -0
- package/dist/Store/SQL/Pg.js +189 -0
- package/dist/Store/SQL/query.d.ts +38 -0
- package/dist/Store/SQL/query.d.ts.map +1 -0
- package/dist/Store/SQL/query.js +367 -0
- package/dist/Store/SQL.d.ts +20 -0
- package/dist/Store/SQL.d.ts.map +1 -0
- package/dist/Store/SQL.js +381 -0
- package/dist/Store/index.d.ts +4 -1
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +15 -3
- package/dist/Store/service.d.ts +16 -5
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +24 -6
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +3 -4
- package/dist/adapters/ServiceBus.d.ts +6 -6
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +13 -15
- package/dist/adapters/cosmos-client.d.ts +2 -2
- package/dist/adapters/cosmos-client.d.ts.map +1 -1
- package/dist/adapters/cosmos-client.js +3 -3
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/adapters/memQueue.d.ts +2 -2
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +3 -3
- package/dist/adapters/mongo-client.d.ts +2 -2
- package/dist/adapters/mongo-client.d.ts.map +1 -1
- package/dist/adapters/mongo-client.js +3 -3
- package/dist/adapters/redis-client.d.ts +2 -2
- package/dist/adapters/redis-client.d.ts.map +1 -1
- package/dist/adapters/redis-client.js +3 -3
- package/dist/api/ContextProvider.d.ts +6 -6
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +6 -6
- package/dist/api/internal/auth.d.ts +42 -4
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +160 -29
- package/dist/api/internal/events.d.ts +2 -2
- package/dist/api/internal/events.d.ts.map +1 -1
- package/dist/api/internal/events.js +11 -7
- package/dist/api/layerUtils.d.ts +5 -5
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +5 -5
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +3 -3
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +37 -1
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +45 -14
- package/dist/api/routing.d.ts +4 -6
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +13 -6
- package/dist/api/setupRequest.d.ts +6 -3
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +11 -6
- package/dist/errorReporter.d.ts +3 -3
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +16 -23
- package/dist/logger.d.ts.map +1 -1
- package/dist/rateLimit.d.ts +8 -2
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +5 -11
- package/examples/query.ts +30 -26
- package/package.json +36 -22
- package/src/CUPS.ts +9 -11
- package/src/Emailer/service.ts +2 -2
- package/src/MainFiberSet.ts +2 -2
- package/src/Model/Repository/Registry.ts +33 -0
- package/src/Model/Repository/ext.ts +93 -6
- package/src/Model/Repository/internal/internal.ts +84 -76
- package/src/Model/Repository/makeRepo.ts +11 -8
- package/src/Model/Repository/service.ts +31 -22
- package/src/Model/Repository.ts +1 -0
- package/src/Model/query/new-kid-interpreter.ts +2 -2
- package/src/Model.ts +1 -0
- package/src/Operations.ts +78 -113
- package/src/OperationsRepo.ts +2 -2
- package/src/QueueMaker/SQLQueue.ts +121 -151
- package/src/QueueMaker/memQueue.ts +82 -103
- package/src/QueueMaker/sbqueue.ts +55 -85
- package/src/RequestContext.ts +4 -4
- package/src/RequestFiberSet.ts +4 -4
- package/src/Store/ContextMapContainer.ts +41 -2
- package/src/Store/Cosmos.ts +437 -343
- package/src/Store/Disk.ts +52 -49
- package/src/Store/Memory.ts +54 -48
- package/src/Store/SQL/Pg.ts +318 -0
- package/src/Store/SQL/query.ts +409 -0
- package/src/Store/SQL.ts +668 -0
- package/src/Store/index.ts +17 -2
- package/src/Store/service.ts +31 -7
- package/src/Store/utils.ts +23 -22
- package/src/adapters/ServiceBus.ts +111 -115
- package/src/adapters/cosmos-client.ts +2 -2
- package/src/adapters/memQueue.ts +2 -2
- package/src/adapters/mongo-client.ts +2 -2
- package/src/adapters/redis-client.ts +2 -2
- package/src/api/ContextProvider.ts +11 -11
- package/src/api/internal/auth.ts +246 -44
- package/src/api/internal/events.ts +14 -9
- package/src/api/layerUtils.ts +8 -8
- package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
- package/src/api/routing/middleware/middleware.ts +52 -12
- package/src/api/routing.ts +17 -7
- package/src/api/setupRequest.ts +27 -7
- package/src/errorReporter.ts +58 -72
- package/src/rateLimit.ts +30 -22
- package/test/auth.test.ts +101 -0
- package/test/contextProvider.test.ts +11 -11
- package/test/controller.test.ts +18 -13
- package/test/dist/auth.test.d.ts.map +1 -0
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/date-query.test.d.ts.map +1 -0
- package/test/dist/fixtures.d.ts +19 -9
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +11 -9
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/dist/repository-ext.test.d.ts.map +1 -0
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/dist/sql-store.test.d.ts.map +1 -0
- package/test/fixtures.ts +10 -8
- package/test/query.test.ts +209 -31
- package/test/rawQuery.test.ts +23 -19
- package/test/repository-ext.test.ts +58 -0
- package/test/requires.test.ts +6 -5
- package/test/routing-interruptibility.test.ts +63 -0
- package/test/rpc-multi-middleware.test.ts +72 -3
- package/test/sql-store.test.ts +1064 -0
- package/test/validateSample.test.ts +12 -9
- package/tsconfig.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,EACzD,iBAAiB,CAAC,KACjB,CAKQ,CAAA;AAEX,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,EACzD,iBAAiB,CAAC,KACjB,CAKQ,CAAA;AAEX,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,MACb,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,2GA0BnF,CAAA;AAEJ,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}
|
package/dist/Store/utils.js
CHANGED
|
@@ -6,7 +6,7 @@ export const makeETag = ({ _etag, ...e }) => ({
|
|
|
6
6
|
// we have to hash the JSON, as hashing the object might contain elements that won't be serialized anyway
|
|
7
7
|
_etag: crypto.createHash("sha256").update(JSON.stringify(e)).digest("hex")
|
|
8
8
|
});
|
|
9
|
-
export const makeUpdateETag = (type) => (e, idKey, current)
|
|
9
|
+
export const makeUpdateETag = (type) => Effect.fnUntraced(function* (e, idKey, current) {
|
|
10
10
|
if (e._etag) {
|
|
11
11
|
if (Option.isNone(current)) {
|
|
12
12
|
return yield* new OptimisticConcurrencyException({
|
|
@@ -27,8 +27,7 @@ export const makeUpdateETag = (type) => (e, idKey, current) => Effect.gen(functi
|
|
|
27
27
|
code: 412
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
return newE;
|
|
30
|
+
return makeETag(e);
|
|
32
31
|
});
|
|
33
32
|
export function lowercaseIfString(val) {
|
|
34
33
|
if (typeof val === "string") {
|
|
@@ -51,4 +50,4 @@ export function greaterThan(valA, valB) {
|
|
|
51
50
|
export function greaterThanExclusive(valA, valB) {
|
|
52
51
|
return valA >= valB;
|
|
53
52
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzNDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUc3RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLHlHQUF5RztJQUN6RyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Q0FDM0UsQ0FBUSxDQUFBO0FBRVgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDN0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDekIsQ0FBSSxFQUNKLEtBQVksRUFDWixPQUF5QjtJQUV6QixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSw4QkFBOEIsQ0FBQztnQkFDL0MsSUFBSTtnQkFDSixFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBVztnQkFDdEIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxHQUFHO2FBQ1YsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSw4QkFBOEIsQ0FBQztZQUMvQyxJQUFJO1lBQ0osRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFXO1lBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsSUFBSSxFQUFFLEdBQUc7U0FDVixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDcEIsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLFVBQVUsaUJBQWlCLENBQUksR0FBTTtJQUN6QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQWEsRUFBRSxJQUFhO0lBQ2xELE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQTtBQUN0QixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3RFLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDL0UsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDeEUsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFBO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUNqRixPQUFPLElBQUksSUFBSSxJQUFJLENBQUE7QUFDckIsQ0FBQyJ9
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type OperationOptionsBase, type ProcessErrorArgs, ServiceBusClient, type ServiceBusMessage, type ServiceBusMessageBatch, type ServiceBusReceivedMessage, type ServiceBusReceiver } from "@azure/service-bus";
|
|
2
|
-
import { Effect, Layer, type Scope
|
|
3
|
-
declare const ServiceBusClientTag_base:
|
|
2
|
+
import { Context, Effect, Layer, type Scope } from "effect-app";
|
|
3
|
+
declare const ServiceBusClientTag_base: Context.OpaqueClass<ServiceBusClientTag, "@services/Client", ServiceBusClient> & {
|
|
4
4
|
readonly make: (url: string) => Effect.Effect<ServiceBusClient, never, Scope.Scope>;
|
|
5
5
|
};
|
|
6
6
|
export declare class ServiceBusClientTag extends ServiceBusClientTag_base {
|
|
7
7
|
static readonly layer: (url: string) => Layer.Layer<ServiceBusClientTag, never, never>;
|
|
8
8
|
}
|
|
9
|
-
declare const Sender_base:
|
|
9
|
+
declare const Sender_base: Context.OpaqueClass<Sender, "Sender", {
|
|
10
10
|
name: string;
|
|
11
11
|
sendMessages: (messages: ServiceBusMessage | ServiceBusMessage[] | ServiceBusMessageBatch, options?: Omit<OperationOptionsBase, "abortSignal">) => Effect.Effect<void, never, never>;
|
|
12
12
|
}> & {
|
|
@@ -18,10 +18,10 @@ declare const Sender_base: ServiceMap.OpaqueClass<Sender, "Sender", {
|
|
|
18
18
|
export declare class Sender extends Sender_base {
|
|
19
19
|
static readonly layer: (name: string) => Layer.Layer<Sender, never, ServiceBusClientTag>;
|
|
20
20
|
}
|
|
21
|
-
export declare const SenderTag: <Id>() => <Key extends string>(queueName: Key) =>
|
|
21
|
+
export declare const SenderTag: <Id>() => <Key extends string>(queueName: Key) => Context.Service<Id, Sender> & {
|
|
22
22
|
layer: Layer.Layer<Id, never, ServiceBusClientTag>;
|
|
23
23
|
};
|
|
24
|
-
declare const Receiver_base:
|
|
24
|
+
declare const Receiver_base: Context.OpaqueClass<Receiver, "Receiver", {
|
|
25
25
|
name: string;
|
|
26
26
|
make: (waitTillEmpty: Effect.Effect<void>) => Effect.Effect<ServiceBusReceiver, never, Scope.Scope>;
|
|
27
27
|
makeSession: (sessionId: string, waitTillEmpty: Effect.Effect<void>) => Effect.Effect<ServiceBusReceiver, never, Scope.Scope>;
|
|
@@ -36,7 +36,7 @@ export declare class Receiver extends Receiver_base {
|
|
|
36
36
|
}, never, ServiceBusClientTag>;
|
|
37
37
|
static readonly layer: (name: string) => Layer.Layer<Receiver, never, ServiceBusClientTag>;
|
|
38
38
|
}
|
|
39
|
-
export declare const ReceiverTag: <Id>() => <Key extends string>(queueName: Key) =>
|
|
39
|
+
export declare const ReceiverTag: <Id>() => <Key extends string>(queueName: Key) => Context.Service<Id, Receiver> & {
|
|
40
40
|
layer: Layer.Layer<Id, never, ServiceBusClientTag>;
|
|
41
41
|
};
|
|
42
42
|
export declare const SenderReceiver: (queue: string, queueDrain?: string) => Layer.Layer<Sender | Receiver, never, ServiceBusClientTag>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceBus.d.ts","sourceRoot":"","sources":["../../src/adapters/ServiceBus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACrN,OAAO,EAAS,MAAM,EAAkB,KAAK,EAAE,KAAK,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ServiceBus.d.ts","sourceRoot":"","sources":["../../src/adapters/ServiceBus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,KAAK,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACrN,OAAO,EAAS,OAAO,EAAE,MAAM,EAAkB,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;;;;AAkBtF,qBAAa,mBACX,SAAQ,wBAAiG;IAEzG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAI,KAAK,MAAM,oDAAiC;CACtE;;UA0BO,MAAM;kBACE,CACZ,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,sBAAsB,EAC1E,OAAO,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,KAChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;;cAJhC,MAAM;sBACE,CACZ,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,sBAAsB,EAC1E,OAAO,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,KAChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;;AALxC,qBAAa,MAAO,SAAQ,WAMQ;IAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAI,MAAM,MAAM,qDAAkC;CACxE;AAED,eAAO,MAAM,SAAS,GAAI,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,WAAW,GAAG;;CASrE,CAAA;;UA8FO,MAAM;UACN,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;iBACtF,CACX,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAC/B,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;cAChD,IAAI,EAAE,IAAI,SACX,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,cACtB,MAAM,GACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;;AAV1D,qBAAa,QAAS,SAAQ,aAWd;IACd,MAAM,CAAC,QAAQ,CAAC,IAAI;;8BA/ES,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;iCAEhB,MAAM,iBAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBAOjC,IAAI,EAAE,IAAI;mCAsEhB;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAI,MAAM,MAAM,uDAAqC;CAC3E;AAED,eAAO,MAAM,WAAW,GAAI,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,WAAW,GAAG;;CASvE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,aAAa,MAAM,+DACS,CAAA;AAE1E,MAAM,WAAW,eAAe,CAAC,IAAI,EAAE,IAAI;IACzC;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACpF;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CACvE"}
|
|
@@ -1,37 +1,35 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/prefer-promise-reject-errors */
|
|
2
2
|
import { ServiceBusClient } from "@azure/service-bus";
|
|
3
|
-
import { Cause, Effect, Exit, FiberSet, Layer
|
|
3
|
+
import { Cause, Context, Effect, Exit, FiberSet, Layer } from "effect-app";
|
|
4
4
|
import { InfraLogger } from "../logger.js";
|
|
5
5
|
const withSpanAndLog = (name) => (self) => Effect.logInfo(name).pipe(Effect.andThen(self), Effect.tap(Effect.logInfo(name + " done")), Effect.withLogSpan(name), Effect.withSpan(name));
|
|
6
6
|
function makeClient(url) {
|
|
7
7
|
return Effect.acquireRelease(Effect.sync(() => new ServiceBusClient(url)).pipe(withSpanAndLog("ServiceBus.client.create")), (client) => Effect.promise(() => client.close()).pipe(withSpanAndLog("ServiceBus.client.close")));
|
|
8
8
|
}
|
|
9
|
-
export class ServiceBusClientTag extends
|
|
9
|
+
export class ServiceBusClientTag extends Context.Opaque()("@services/Client", { make: makeClient }) {
|
|
10
10
|
static layer = (url) => this.toLayer(this.make(url));
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
const makeSender = (name) => Effect.gen(function* () {
|
|
12
|
+
const makeSender_ = Effect.fnUntraced(function* (queueName) {
|
|
13
|
+
const serviceBusClient = yield* ServiceBusClientTag;
|
|
14
|
+
return yield* Effect.acquireRelease(Effect.sync(() => serviceBusClient.createSender(queueName)).pipe(withSpanAndLog(`ServiceBus.sender.create ${queueName}`)), (sender) => Effect.promise(() => sender.close()).pipe(withSpanAndLog(`ServiceBus.sender.close ${queueName}`)));
|
|
15
|
+
});
|
|
16
|
+
const makeSender = Effect.fnUntraced(function* (name) {
|
|
19
17
|
const sender = yield* makeSender_(name);
|
|
20
18
|
const sendMessages = Effect.fnUntraced(function* (messages, options) {
|
|
21
19
|
return yield* Effect.promise((abortSignal) => sender.sendMessages(messages, { ...options, abortSignal }));
|
|
22
20
|
});
|
|
23
21
|
return { name, sendMessages };
|
|
24
22
|
});
|
|
25
|
-
export class Sender extends
|
|
23
|
+
export class Sender extends Context.Opaque()("Sender", { make: makeSender }) {
|
|
26
24
|
static layer = (name) => this.toLayer(this.make(name));
|
|
27
25
|
}
|
|
28
26
|
export const SenderTag = () => (queueName) => {
|
|
29
|
-
const tag =
|
|
27
|
+
const tag = Context.Service(`ServiceBus.Sender.${queueName}`);
|
|
30
28
|
return Object.assign(tag, {
|
|
31
29
|
layer: Layer.effect(tag, Sender.make(queueName).pipe(Effect.map(Sender.of)))
|
|
32
30
|
});
|
|
33
31
|
};
|
|
34
|
-
const makeReceiver =
|
|
32
|
+
const makeReceiver = Effect.fnUntraced(function* (name) {
|
|
35
33
|
const serviceBusClient = yield* ServiceBusClientTag;
|
|
36
34
|
const makeReceiver = Effect.fnUntraced(function* (queueName, waitTillEmpty, sessionId) {
|
|
37
35
|
return yield* Effect.acquireRelease((sessionId
|
|
@@ -85,15 +83,15 @@ const makeReceiver = (name) => Effect.gen(function* () {
|
|
|
85
83
|
})
|
|
86
84
|
};
|
|
87
85
|
});
|
|
88
|
-
export class Receiver extends
|
|
86
|
+
export class Receiver extends Context.Opaque()("Receiver") {
|
|
89
87
|
static make = makeReceiver;
|
|
90
88
|
static layer = (name) => this.toLayer(makeReceiver(name));
|
|
91
89
|
}
|
|
92
90
|
export const ReceiverTag = () => (queueName) => {
|
|
93
|
-
const tag =
|
|
91
|
+
const tag = Context.Service(`ServiceBus.Receiver.${queueName}`);
|
|
94
92
|
return Object.assign(tag, {
|
|
95
93
|
layer: Layer.effect(tag, makeReceiver(queueName).pipe(Effect.map(Receiver.of)))
|
|
96
94
|
});
|
|
97
95
|
};
|
|
98
96
|
export const SenderReceiver = (queue, queueDrain) => Layer.mergeAll(Sender.layer(queue), Receiver.layer(queueDrain ?? queue));
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUJ1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9TZXJ2aWNlQnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9FQUFvRTtBQUNwRSxPQUFPLEVBQW9ELGdCQUFnQixFQUFnSCxNQUFNLG9CQUFvQixDQUFBO0FBQ3JOLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYyxNQUFNLFlBQVksQ0FBQTtBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFVLElBQTRCLEVBQUUsRUFBRSxDQUNqRixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUMxQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUN0QixDQUFBO0FBRUgsU0FBUyxVQUFVLENBQUMsR0FBVztJQUM3QixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUM3RixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FDakcsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQ1gsU0FBUSxPQUFPLENBQUMsTUFBTSxFQUF5QyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBRXpHLE1BQU0sQ0FBVSxLQUFLLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBOztBQUd2RSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFNBQWlCO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQUE7SUFFbkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUQsY0FBYyxDQUFDLDRCQUE0QixTQUFTLEVBQUUsQ0FBQyxDQUN4RCxFQUNELENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsMkJBQTJCLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FDOUcsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUFZO0lBQ3pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUM5QyxRQUEwRSxFQUMxRSxPQUFtRDtRQUVuRCxPQUFPLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNHLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQTtBQUMvQixDQUFDLENBQUMsQ0FBQTtBQUVGLE1BQU0sT0FBTyxNQUFPLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFNdEMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFVLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7O0FBR3pFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFPLEVBQUUsQ0FBQyxDQUFxQixTQUFjLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFhLHFCQUFxQixTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBRXpFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEdBQUcsRUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNuRDtLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUMsSUFBWTtJQUMzRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixDQUFBO0lBRW5ELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQ3BDLFFBQVEsQ0FBQyxFQUFDLFNBQWlCLEVBQUUsYUFBa0MsRUFBRSxTQUFrQjtRQUNqRixPQUFPLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQ2pDLENBQUMsU0FBUztZQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDNUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFDL0UsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLGFBQWEsQ0FBQyxJQUFJLENBQ2hCLGNBQWMsQ0FBQyxxQ0FBcUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDLEVBQzdFLE1BQU0sQ0FBQyxPQUFPLENBQ1osTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xDLGNBQWMsQ0FBQyw2QkFBNkIsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDLENBQ3RFLENBQ0YsRUFDRCxjQUFjLENBQUMsK0JBQStCLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUN4RSxDQUNKLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsYUFBa0MsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUV0RixNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQWlCLEVBQUUsYUFBa0MsRUFBRSxFQUFFLENBQzVFLFlBQVksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRTlDLE9BQU87UUFDTCxJQUFJO1FBQ0osSUFBSTtRQUNKLFdBQVc7UUFDWCxTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBYSxLQUFrQyxFQUFFLFNBQWtCO1lBQ3ZHLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUNqQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFlLENBQUE7WUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTTtpQkFDaEIsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3RHLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDMUUsQ0FBQyxDQUFDLENBQUE7WUFDSixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxTQUFTO2dCQUN4QixDQUFDLENBQUMsV0FBVyxDQUNYLFNBQVMsRUFDVCxJQUFJLENBQ0w7Z0JBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVkLE1BQU0sU0FBUyxHQUFHLENBQUksTUFBMkMsRUFBRSxFQUFFLENBQ25FLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3BDLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ1AsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNyQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sMERBQTBEO29CQUMxRCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFDbEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNMLENBQUE7WUFFSCxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUMxQixNQUFNO2lCQUNILElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQztxQkFDUixTQUFTLENBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDcEIsU0FBUyxDQUNQLEtBQUs7eUJBQ0YsWUFBWSxDQUFDLEdBQUcsQ0FBQzt5QkFDakIsSUFBSSxDQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLFNBQVMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3RGLENBQ0o7b0JBQ0gsY0FBYyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0QsK0RBQStEO2lCQUNoRSxDQUFDLENBQUE7Z0JBQ0osT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUE7WUFDbkQsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxjQUFjLENBQUMsa0NBQWtDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFDdEUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNmLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNyQixjQUFjLENBQUMsaUNBQWlDLFNBQVMsRUFBRSxDQUFDLENBQzdELENBQ3VDLENBQUEsQ0FBQyx1QkFBdUI7UUFDdEUsQ0FBQyxDQUFDO0tBQ0gsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPLENBQUMsTUFBTSxFQVd4QyxDQUFDLFVBQVUsQ0FBQztJQUNkLE1BQU0sQ0FBVSxJQUFJLEdBQUcsWUFBWSxDQUFBO0lBQ25DLE1BQU0sQ0FBVSxLQUFLLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7O0FBRzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFPLEVBQUUsQ0FBQyxDQUFxQixTQUFjLEVBQUUsRUFBRTtJQUMxRSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFlLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBRTdFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEdBQUcsRUFDSCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3REO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFFLFVBQW1CLEVBQUUsRUFBRSxDQUNuRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQSJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CosmosClient as ComosClient_ } from "@azure/cosmos";
|
|
2
|
-
import { Effect, Layer
|
|
2
|
+
import { Context, Effect, Layer } from "effect-app";
|
|
3
3
|
export declare const makeCosmosClient: (url: string, dbName: string) => Effect.Effect<{
|
|
4
4
|
db: import("@azure/cosmos").Database;
|
|
5
5
|
}, never, never>;
|
|
6
|
-
declare const CosmosClient_base:
|
|
6
|
+
declare const CosmosClient_base: Context.ServiceClass<CosmosClient, "@services/CosmosClient", {
|
|
7
7
|
readonly db: ReturnType<InstanceType<typeof ComosClient_>["database"]>;
|
|
8
8
|
}>;
|
|
9
9
|
export declare class CosmosClient extends CosmosClient_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmos-client.d.ts","sourceRoot":"","sources":["../../src/adapters/cosmos-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cosmos-client.d.ts","sourceRoot":"","sources":["../../src/adapters/cosmos-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAInD,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM;;gBACM,CAAA;;iBAGnD,UAAU,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;;AADxE,qBAAa,YAAa,SAAQ,iBAEJ;CAAG;AAEjC,eAAO,MAAM,EAAE,sEAAwD,CAAA;AAEvE,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,EAAE,QAAQ,MAAM,4CACF,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CosmosClient as ComosClient_ } from "@azure/cosmos";
|
|
2
|
-
import { Effect, Layer
|
|
2
|
+
import { Context, Effect, Layer } from "effect-app";
|
|
3
3
|
const withClient = (url) => Effect.sync(() => new ComosClient_(url));
|
|
4
4
|
export const makeCosmosClient = (url, dbName) => Effect.map(withClient(url), (x) => ({ db: x.database(dbName) }));
|
|
5
|
-
export class CosmosClient extends
|
|
5
|
+
export class CosmosClient extends Context.Service()("@services/CosmosClient") {
|
|
6
6
|
}
|
|
7
7
|
export const db = CosmosClient.asEffect().pipe(Effect.map((_) => _.db));
|
|
8
8
|
export const CosmosClientLayer = (cosmosUrl, dbName) => Layer.effect(CosmosClient, makeCosmosClient(cosmosUrl, dbName));
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9jb3Ntb3MtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLElBQUksWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuRCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBVyxFQUFFLE1BQWMsRUFBRSxFQUFFLENBQzlELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFbEUsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFPLENBQUMsT0FBTyxFQUU3QyxDQUFDLHdCQUF3QixDQUFDO0NBQUc7QUFFakMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFdkUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxFQUFFLENBQ3JFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/adapters/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/adapters/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBACiO,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CADnoB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Effect, type Queue
|
|
2
|
-
declare const MemQueue_base:
|
|
1
|
+
import { Context, Effect, type Queue } from "effect-app";
|
|
2
|
+
declare const MemQueue_base: Context.OpaqueClass<MemQueue, "effect-app/MemQueue", {
|
|
3
3
|
getOrCreateQueue: (k: string) => Effect.Effect<Queue.Queue<string, never>, never, never>;
|
|
4
4
|
}> & {
|
|
5
5
|
readonly make: Effect.Effect<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/adapters/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../src/adapters/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;;;;;;;;AAkBxD,qBAAa,QAAS,SAAQ,aAA2D;IACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,uDAA0B;CAC/C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context, Effect } from "effect-app";
|
|
2
2
|
import * as Q from "effect/Queue";
|
|
3
3
|
const make = Effect
|
|
4
4
|
.gen(function* () {
|
|
@@ -14,7 +14,7 @@ const make = Effect
|
|
|
14
14
|
})
|
|
15
15
|
};
|
|
16
16
|
});
|
|
17
|
-
export class MemQueue extends
|
|
17
|
+
export class MemQueue extends Context.Opaque()("effect-app/MemQueue", { make }) {
|
|
18
18
|
static Live = this.toLayer(this.make);
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQWMsTUFBTSxZQUFZLENBQUE7QUFDeEQsT0FBTyxLQUFLLENBQUMsTUFBTSxjQUFjLENBQUE7QUFFakMsTUFBTSxJQUFJLEdBQUcsTUFBTTtLQUNoQixHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ1osTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBK0IsQ0FBQyxDQUFBO0lBRTlFLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQVM7WUFDckQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN0QixJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUE7WUFDZixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFVLENBQUE7WUFDekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDbEIsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUM7S0FDSCxDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQVksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZGLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context, Layer } from "effect-app";
|
|
2
2
|
import { MongoClient as MongoClient_ } from "mongodb";
|
|
3
|
-
declare const MongoClient_base:
|
|
3
|
+
declare const MongoClient_base: Context.ServiceClass<MongoClient, "@services/MongoClient", {
|
|
4
4
|
readonly db: ReturnType<InstanceType<typeof MongoClient_>["db"]>;
|
|
5
5
|
}>;
|
|
6
6
|
export declare class MongoClient extends MongoClient_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo-client.d.ts","sourceRoot":"","sources":["../../src/adapters/mongo-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mongo-client.d.ts","sourceRoot":"","sources":["../../src/adapters/mongo-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,KAAK,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;;iBAiBtC,UAAU,CAAC,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;;AADlE,qBAAa,WAAY,SAAQ,gBAEJ;CAAG;AAEhC,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,2CACH,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Layer
|
|
1
|
+
import { Context, Effect, Layer } from "effect-app";
|
|
2
2
|
import { MongoClient as MongoClient_ } from "mongodb";
|
|
3
3
|
// TODO: we should probably share a single client...
|
|
4
4
|
const withClient = (url) => Effect.acquireRelease(Effect
|
|
@@ -7,7 +7,7 @@ const withClient = (url) => Effect.acquireRelease(Effect
|
|
|
7
7
|
return client.connect();
|
|
8
8
|
}), (cl) => Effect.promise(() => cl.close()).pipe(Effect.uninterruptible, Effect.orDie));
|
|
9
9
|
const makeMongoClient = (url, dbName) => Effect.map(withClient(url), (x) => ({ db: x.db(dbName) }));
|
|
10
|
-
export class MongoClient extends
|
|
10
|
+
export class MongoClient extends Context.Service()("@services/MongoClient") {
|
|
11
11
|
}
|
|
12
12
|
export const MongoClientLive = (mongoUrl, dbName) => Layer.effect(MongoClient, makeMongoClient(mongoUrl, dbName));
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL21vbmdvLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLFdBQVcsSUFBSSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFckQsb0RBQW9EO0FBRXBELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDakMsTUFBTSxDQUFDLGNBQWMsQ0FDbkIsTUFBTTtLQUNILE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUN6QixDQUFDLENBQUMsRUFDSixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQ3BGLENBQUE7QUFFSCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFcEgsTUFBTSxPQUFPLFdBQVksU0FBUSxPQUFPLENBQUMsT0FBTyxFQUU1QyxDQUFDLHVCQUF1QixDQUFDO0NBQUc7QUFFaEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBZ0IsRUFBRSxNQUFlLEVBQUUsRUFBRSxDQUNuRSxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUEifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Layer, Option
|
|
1
|
+
import { Context, Effect, Layer, Option } from "effect-app";
|
|
2
2
|
import type { RedisClient as Client } from "redis";
|
|
3
3
|
import Redlock from "redlock";
|
|
4
4
|
declare const ConnectionException_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
@@ -21,7 +21,7 @@ export declare const makeRedisClient: (makeClient: () => Client) => Effect.Effec
|
|
|
21
21
|
}>, ConnectionException, never>;
|
|
22
22
|
set: (key: string, val: string) => Effect.Effect<void, ConnectionException, never>;
|
|
23
23
|
}, never, import("effect/Scope").Scope>;
|
|
24
|
-
declare const RedisClient_base:
|
|
24
|
+
declare const RedisClient_base: Context.ServiceClass<RedisClient, "@services/RedisClient", {
|
|
25
25
|
readonly client: Client;
|
|
26
26
|
readonly lock: Redlock;
|
|
27
27
|
readonly get: (key: string) => Effect.Effect<Option.Option<string>, ConnectionException>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../src/adapters/redis-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,KAAK,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,OAAO,MAAM,SAAS,CAAA;;;;AAE7B,qBAAa,mBAAoB,SAAQ,yBAAwC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;gBACrG,KAAK,EAAE,KAAK;CAGzB;AAED,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,MAAM;;;eAO9B,MAAM;gBAiCL,MAAM,SAAS,MAAM;gBAXrB,MAAM,SAAS,MAAM,SAAS,MAAM;oBAqBhC,MAAM;;;eAhCX,MAAM,OAAO,MAAM;uCA8D1C,CAAA;;qBAGgB,MAAM;mBACR,OAAO;kBACR,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;mBACzE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;mBACzF,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC;uBACnF,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,EAAE,mBAAmB,CAAC;kBAClG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC;;AAPtF,qBAAa,WAAY,SAAQ,gBAQJ;CAAG;AAEhC,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,2CACgB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Data, Effect, Layer, Option
|
|
1
|
+
import { Context, Data, Effect, Layer, Option } from "effect-app";
|
|
2
2
|
import Redlock from "redlock";
|
|
3
3
|
export class ConnectionException extends Data.TaggedError("ConnectionException") {
|
|
4
4
|
constructor(cause) {
|
|
@@ -68,7 +68,7 @@ export const makeRedisClient = (makeClient) => Effect.acquireRelease(Effect
|
|
|
68
68
|
cl.client.quit((err) => res(err ? Effect.fail(err) : Effect.void));
|
|
69
69
|
})
|
|
70
70
|
.pipe(Effect.uninterruptible, Effect.orDie));
|
|
71
|
-
export class RedisClient extends
|
|
71
|
+
export class RedisClient extends Context.Service()("@services/RedisClient") {
|
|
72
72
|
}
|
|
73
73
|
export const RedisClientLayer = (storageUrl) => Layer.effect(RedisClient, makeRedisClient(makeRedis(storageUrl)));
|
|
74
74
|
function createClient(makeClient) {
|
|
@@ -91,4 +91,4 @@ function makeRedis(storageUrl) {
|
|
|
91
91
|
}
|
|
92
92
|
: storageUrl);
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL3JlZGlzLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqRSxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUE7QUFFN0IsTUFBTSxPQUFPLG1CQUFvQixTQUFRLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQW9DO0lBQ2pILFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUF3QixFQUFFLEVBQUUsQ0FDMUQsTUFBTSxDQUFDLGNBQWMsQ0FDbkIsTUFBTTtLQUNILElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDVCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBRWxDLFNBQVMsR0FBRyxDQUFDLEdBQVc7UUFDdEIsT0FBTyxNQUFNO2FBQ1YsUUFBUSxDQUE2QyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3pCLEdBQUc7Z0JBQ0QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Layer, type NonEmptyReadonlyArray, type Scope
|
|
1
|
+
import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Scope } from "effect-app";
|
|
2
2
|
import { type HttpRouter } from "effect-app/http";
|
|
3
3
|
import { type EffectGenUtils } from "effect-app/utils/gen";
|
|
4
4
|
import { type Yieldable } from "effect/Effect";
|
|
@@ -11,20 +11,20 @@ export interface ContextProviderId {
|
|
|
11
11
|
* each service is an effect which builds some context for each request
|
|
12
12
|
*/
|
|
13
13
|
type TDepsArr<TDeps extends ReadonlyArray<any>> = {
|
|
14
|
-
[K in keyof TDeps]: TDeps[K] extends ContextTagWithDefault.Base<Effect.Effect<
|
|
14
|
+
[K in keyof TDeps]: TDeps[K] extends ContextTagWithDefault.Base<Effect.Effect<Context.Context<infer _1>, never, infer _R>> ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : TDeps[K] extends (ContextTagWithDefault.Base<(() => Generator<infer _YW, infer _1, infer _2>)>) ? [_YW] extends [never] ? TDeps[K] : [_YW] extends [Yieldable<any, infer _2, never, infer _R>] ? [_R] extends [HttpRouter.Provided] ? TDeps[K] : `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : "WTF are you yielding man?" : `You cannot throw errors from providers`;
|
|
15
15
|
};
|
|
16
16
|
export declare const mergeContextProviders: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => {
|
|
17
17
|
dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; };
|
|
18
|
-
effect: Effect.Effect<Effect.Effect<
|
|
18
|
+
effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>, never, EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
|
|
19
19
|
};
|
|
20
20
|
export declare const ContextProvider: <ContextProviderA, MakeContextProviderE, MakeContextProviderR, ContextProviderR extends Scope.Scope, Dependencies extends NonEmptyReadonlyArray<Layer.Any>>(input: {
|
|
21
21
|
effect: Effect.Effect<Effect.Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<Yieldable<any, any, never, ContextProviderR>, ContextProviderA, any>), MakeContextProviderE, MakeContextProviderR | Scope.Scope>;
|
|
22
22
|
dependencies?: Dependencies;
|
|
23
|
-
}) =>
|
|
23
|
+
}) => Context.Service<ContextProviderId, Effect.Effect<ContextProviderA, never, ContextProviderR>> & {
|
|
24
24
|
Default: Layer.Layer<ContextProviderId, MakeContextProviderE | LayerUtils.GetLayersError<Dependencies>, Exclude<MakeContextProviderR, LayerUtils.GetLayersSuccess<Dependencies>> | LayerUtils.GetLayersContext<Dependencies>>;
|
|
25
25
|
};
|
|
26
|
-
export declare const MergedContextProvider: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<
|
|
27
|
-
export declare const EmptyContextProvider:
|
|
26
|
+
export declare const MergedContextProvider: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>, never, EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude<Context.Service.Identifier<TDeps[number]>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
|
|
27
|
+
export declare const EmptyContextProvider: Context.Service<ContextProviderId, Effect.Effect<Context.Context<never>, never, never>> & {
|
|
28
28
|
Default: Layer.Layer<ContextProviderId, never, never>;
|
|
29
29
|
};
|
|
30
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../src/api/ContextProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,qBAAqB,EAAQ,KAAK,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../src/api/ContextProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Effect, Layer, pipe
|
|
2
|
+
import { Context, Effect, Layer, pipe } from "effect-app";
|
|
3
3
|
import { mergeContexts } from "./layerUtils.js";
|
|
4
4
|
// Note: the type here must be aligned with MergedContextProvider
|
|
5
5
|
export const mergeContextProviders = (
|
|
@@ -15,15 +15,15 @@ export const mergeContextProviders = (
|
|
|
15
15
|
maker: deps[i],
|
|
16
16
|
handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
|
|
17
17
|
}));
|
|
18
|
-
// services are effects which return some
|
|
18
|
+
// services are effects which return some Context.Context<...>
|
|
19
19
|
const context = yield* mergeContexts(services);
|
|
20
20
|
return context;
|
|
21
21
|
});
|
|
22
22
|
})
|
|
23
23
|
});
|
|
24
|
-
// Effect Rpc Middleware: for single tag providing, we could use Provides, for providing
|
|
24
|
+
// Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
|
|
25
25
|
export const ContextProvider = (input) => {
|
|
26
|
-
const ctx =
|
|
26
|
+
const ctx = Context.Service("ContextProvider");
|
|
27
27
|
const e = input.effect.pipe(Effect.map((eg) => eg[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg)() : eg));
|
|
28
28
|
const l = Layer.effect(ctx, e);
|
|
29
29
|
return Object.assign(ctx, {
|
|
@@ -34,5 +34,5 @@ export const ContextProvider = (input) => {
|
|
|
34
34
|
export const MergedContextProvider = (
|
|
35
35
|
// long life to reverse mapped types
|
|
36
36
|
...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
|
|
37
|
-
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9Db250ZXh0UHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsSUFBSSxFQUFjLE1BQU0sWUFBWSxDQUFBO0FBS2pHLE9BQU8sRUFBZ0UsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUEwQzdHLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUduQyxvQ0FBb0M7QUFDcEMsR0FBRyxJQUFxQixFQWN4QixFQUFFLENBQUMsQ0FBQztJQUNKLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFTLENBQUMsT0FBTyxDQUFRO0lBQ3hELE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMxQixpREFBaUQ7UUFDakQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFhLENBQUMsQ0FBQTtRQUMvQyxPQUFPLE1BQU07YUFDVixHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ1osTUFBTSxRQUFRLEdBQUksTUFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNwRDtnQkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDZCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQ2xHLENBQ0YsQ0FBQyxDQUFBO1lBQ0YsOERBQThEO1lBQzlELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFlLENBQUMsQ0FBQTtZQUNyRCxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBUTtDQUNWLENBQUMsQ0FBQTtBQUVGLHVJQUF1STtBQUN2SSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FPN0IsS0FZQyxFQUNELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUl6QixpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNsSCxDQUFBO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBUSxDQUFDLENBQUE7SUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDYixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFnQyxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBT2xIO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0FBR25DLG9DQUFvQztBQUNwQyxHQUFHLElBQXFCLEVBQ3hCLEVBQUUsQ0FDRixJQUFJLENBQ0YsSUFBcUQsRUFDckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBUSxDQUFDLENBaUJqQyxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSJ9
|
|
@@ -1,14 +1,52 @@
|
|
|
1
1
|
import { Effect } from "effect-app";
|
|
2
2
|
import { HttpHeaders, HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export declare class UnauthorizedError extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
readonly statusCode: number;
|
|
6
|
+
headers: {
|
|
7
|
+
"WWW-Authenticate": string;
|
|
8
|
+
};
|
|
9
|
+
constructor(message?: string);
|
|
10
|
+
}
|
|
11
|
+
export declare class InvalidRequestError extends UnauthorizedError {
|
|
12
|
+
readonly code: string;
|
|
13
|
+
readonly status = 400;
|
|
14
|
+
readonly statusCode = 400;
|
|
15
|
+
constructor(message?: string, useErrorCode?: boolean);
|
|
16
|
+
}
|
|
17
|
+
export declare class InvalidTokenError extends UnauthorizedError {
|
|
18
|
+
readonly code = "invalid_token";
|
|
19
|
+
constructor(message?: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class InsufficientScopeError extends UnauthorizedError {
|
|
22
|
+
readonly code = "insufficient_scope";
|
|
23
|
+
readonly status = 403;
|
|
24
|
+
readonly statusCode = 403;
|
|
25
|
+
constructor(scopes?: ReadonlyArray<string>, message?: string);
|
|
26
|
+
}
|
|
27
|
+
export interface JwtVerifierOptions {
|
|
28
|
+
readonly audience?: string | Array<string> | ReadonlyArray<string>;
|
|
29
|
+
readonly clockTolerance?: number;
|
|
30
|
+
readonly issuer?: string;
|
|
31
|
+
readonly issuerBaseURL?: string;
|
|
32
|
+
readonly jwksUri?: string;
|
|
33
|
+
readonly maxTokenAge?: number;
|
|
34
|
+
readonly secret?: string;
|
|
35
|
+
readonly strict?: boolean;
|
|
36
|
+
readonly tokenSigningAlg?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface AuthOptions extends JwtVerifierOptions {
|
|
39
|
+
readonly authRequired?: boolean;
|
|
40
|
+
}
|
|
41
|
+
type Config = AuthOptions;
|
|
42
|
+
type JwtError = InsufficientScopeError | InvalidRequestError | InvalidTokenError | UnauthorizedError;
|
|
43
|
+
export declare const checkJWTI: (config: Config) => (headers: HttpHeaders.Headers) => Effect.Effect<void, UnauthorizedError, never>;
|
|
6
44
|
export declare const checkJwt: (config: Config) => <E, R>(app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, HttpServerRequest.HttpServerRequest | R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, E | import("effect/unstable/http/HttpBody").HttpBodyError, HttpServerRequest.HttpServerRequest | R>;
|
|
7
45
|
declare const JWTError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Readonly<A> & {
|
|
8
46
|
readonly _tag: "JWTError";
|
|
9
47
|
} & import("effect/Pipeable").Pipeable;
|
|
10
48
|
export declare class JWTError extends JWTError_base<{
|
|
11
|
-
error:
|
|
49
|
+
error: JwtError;
|
|
12
50
|
}> {
|
|
13
51
|
}
|
|
14
52
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/internal/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/internal/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,MAAM,EAAU,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,WAAW,EAAkB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AASpG,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAM;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAM;IACjC,OAAO;;MAAiD;gBAE5C,OAAO,SAAiB;CAIrC;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,SAAkB,MAAM,OAAM;IAC9B,SAAkB,UAAU,OAAM;gBAEtB,OAAO,SAAoB,EAAE,YAAY,UAAO;CAO7D;AAED,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,IAAI,mBAAkB;gBAEnB,OAAO,SAAkB;CAItC;AAED,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,wBAAuB;IACpC,SAAkB,MAAM,OAAM;IAC9B,SAAkB,UAAU,OAAM;gBAEtB,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,SAAuB;CAI3E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAClE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,KAAK,MAAM,GAAG,WAAW,CAAA;AAEzB,KAAK,QAAQ,GAAG,sBAAsB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;AA6JpG,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,oFAYvC,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,8QAqBtC,CAAA;;;;AAED,qBAAa,QAAS,SAAQ,cAA6B;IACzD,KAAK,EAAE,QAAQ,CAAA;CAChB,CAAC;CAAG"}
|