@effect-app/infra 0.12.6 → 0.14.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 +20 -0
- package/_cjs/api/codec.cjs +2 -4
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +18 -21
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +4 -4
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +5 -7
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +49 -49
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -22
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +6 -17
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +63 -63
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -4
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -8
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +11 -13
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +1 -1
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/filter.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -3
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +12 -18
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -7
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +23 -26
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -5
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +44 -29
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +56 -60
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +15 -16
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +14 -16
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +22 -23
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +7 -7
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +2 -4
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +16 -17
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +23 -25
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +20 -21
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +10 -10
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +18 -18
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +23 -23
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +4 -6
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +16 -15
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/defaultErrorHandler.ts +3 -5
- package/_src/api/routing.ts +12 -13
- package/_src/errors.ts +1 -1
- package/_src/filter/types/path/common.ts +9 -9
- package/_src/filter/types/path/eager.ts +12 -12
- package/_src/filter/types/utils.ts +1 -1
- package/_src/filter.ts +7 -11
- package/_src/services/Repository.ts +111 -50
- package/_src/services/Store/Cosmos.ts +14 -14
- package/_src/services/Store/codeFilter.test.ts +37 -30
- package/_src/services/Store/utils.ts +34 -34
- package/_src/services/simpledb/memdb.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +5 -6
- package/dist/RequestContext.d.ts +12 -12
- package/dist/api/codec.js +3 -5
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +22 -23
- package/dist/api/express/makeJsonSchema.js +3 -5
- package/dist/api/express/makeOpenApiSpecs.js +5 -7
- package/dist/api/express/schema/requestHandler.d.ts +5 -5
- package/dist/api/express/schema/requestHandler.js +45 -45
- package/dist/api/express/schema/routing.js +21 -23
- package/dist/api/reportError.js +6 -18
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +60 -60
- package/dist/api/setupRequest.js +3 -5
- package/dist/api/writeDocs.js +7 -9
- package/dist/errorReporter.js +10 -12
- package/dist/errors.js +2 -2
- package/dist/filter/types/path/common.d.ts.map +1 -1
- package/dist/filter/types/path/eager.d.ts.map +1 -1
- package/dist/filter/types/utils.d.ts.map +1 -1
- package/dist/filter.d.ts.map +1 -1
- package/dist/filter.js +2 -2
- package/dist/instrument.js +2 -4
- package/dist/rateLimit.js +7 -9
- package/dist/services/Emailer/Sendgrid.js +15 -22
- package/dist/services/Emailer/fake.js +5 -8
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Operations/live.js +24 -27
- package/dist/services/Operations/service.js +4 -6
- package/dist/services/Repository.d.ts +26 -8
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +41 -25
- package/dist/services/Store/Cosmos.d.ts +1 -1
- package/dist/services/Store/Cosmos.js +66 -68
- package/dist/services/Store/Disk.js +16 -19
- package/dist/services/Store/Memory.d.ts +1 -1
- package/dist/services/Store/Memory.js +16 -18
- package/dist/services/Store/Redis.d.ts +1 -1
- package/dist/services/Store/Redis.js +21 -24
- package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
- package/dist/services/Store/index.js +6 -8
- package/dist/services/Store/service.d.ts +1 -1
- package/dist/services/Store/service.js +3 -5
- 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 +45 -46
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/cosmosdb.js +23 -25
- package/dist/services/simpledb/diskdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.js +18 -18
- package/dist/services/simpledb/memdb.d.ts +3 -3
- package/dist/services/simpledb/memdb.js +12 -11
- package/dist/services/simpledb/mongodb.d.ts +2 -2
- package/dist/services/simpledb/mongodb.js +18 -18
- package/dist/services/simpledb/redisdb.d.ts +8 -8
- package/dist/services/simpledb/redisdb.js +21 -21
- package/dist/services/simpledb/shared.d.ts +9 -9
- package/dist/services/simpledb/shared.js +5 -7
- package/dist/services/simpledb/simpledb.d.ts +1 -1
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +19 -17
- package/package.json +11 -11
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-314902b6271c341511f7398a50469024 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-3f072cc7afa09b6adaead0527ab9df83 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-74c3c295c110fc861b6a4c673afc3e24 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-bf6dae8cb9ea9740ceb39aefaf12716c +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-cf9d1486029526079a5f68f2041dea02 +0 -0
- package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-b4710ed9fb3d0757c4bf23045c585670 +0 -0
- package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-ee17e5395bb1b7b36a4e2e22a6ae1449 +0 -0
- package/.jest-cache/haste-map-7dc16d7fae8c072843ed1c69eae73100-a8a4225b317477b49bca31f54559afb3-c16136699bb7f463be85273162b447c3 +0 -0
- package/.jest-cache/haste-map-9aa1e395a82e108eb49698982c574272-e2f1f4b6d87214e3c49442fed31f310c-f7435f46fc41ac5a13d06a49cae9a650 +0 -0
- package/.jest-cache/haste-map-9d206b45d610536c9ec65eec263c6964-a8a4225b317477b49bca31f54559afb3-3510506a330b44f1ae629033aac8fbb3 +0 -0
- package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-17b550b450b18840c25861aa6e835f0c +0 -0
- package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-4dc31290b1efc98335eb4c89167d75c3 +0 -0
- package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-997106edf4bbc31567a378146180e45e +0 -0
- package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-f0cd25414f9ed16c446940ca3aa23c1b +0 -0
- package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-2cac07d09e6384e2d37c49714edad0ba +0 -0
- package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-d7967c2976c5feac7161c964f0aa442f +0 -0
- package/.jest-cache/haste-map-fb1a173276d25bbff02f815600059283-938122bdc1c8836874b6585d7acb2e99-f705929cca05ce95ceaa6d520b560ce8 +0 -0
package/dist/RequestContext.d.ts
CHANGED
|
@@ -4,13 +4,13 @@ export declare const RequestId: import("@effect-app/prelude/schema").StringIdSch
|
|
|
4
4
|
};
|
|
5
5
|
export type RequestId = ParsedShapeOfCustom<typeof RequestId>;
|
|
6
6
|
declare const RequestContextParent_base: import("@effect-app/schema").MNModel<import("@effect-app/schema").SchemaProperties<{
|
|
7
|
-
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/
|
|
7
|
+
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
8
8
|
id: import("@effect-app/schema").Property<import("@effect-app/prelude/schema").StringIdSchema & import("@effect-app/schema").Utils<import("@effect-app/prelude/schema").StringIdSchema> & {
|
|
9
9
|
make(this: void): import("@effect-app/prelude/schema").StringId;
|
|
10
|
-
}, "required", import("@fp-ts/
|
|
11
|
-
name: import("@effect-app/schema").Property<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>>>, "required", import("@fp-ts/
|
|
12
|
-
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/
|
|
13
|
-
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/
|
|
10
|
+
}, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
11
|
+
name: import("@effect-app/schema").Property<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>>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
12
|
+
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
13
|
+
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => Date]>>;
|
|
14
14
|
}>, RequestContextParent, RequestContextParent.ConstructorInput, RequestContextParent.Encoded, RequestContextParent.Props> & import("@effect-app/schema").PropsExtensions<RequestContextParent.Props>;
|
|
15
15
|
export declare class RequestContextParent extends RequestContextParent_base {
|
|
16
16
|
}
|
|
@@ -18,15 +18,15 @@ export declare class RequestContextParent extends RequestContextParent_base {
|
|
|
18
18
|
export type RequestContextParentConstructor = typeof RequestContextParent;
|
|
19
19
|
export declare function makeRequestId(): import("@effect-app/prelude/schema").StringId;
|
|
20
20
|
declare const RequestContext_base: import("@effect-app/schema").MNModel<import("@effect-app/schema").SchemaProperties<{
|
|
21
|
-
id: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/prelude/schema").StringId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId>>, "required", import("@fp-ts/
|
|
21
|
+
id: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/prelude/schema").StringId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => import("@effect-app/prelude/schema").StringId]>>;
|
|
22
22
|
rootId: import("@effect-app/schema").Property<import("@effect-app/prelude/schema").StringIdSchema & import("@effect-app/schema").Utils<import("@effect-app/prelude/schema").StringIdSchema> & {
|
|
23
23
|
make(this: void): import("@effect-app/prelude/schema").StringId;
|
|
24
|
-
}, "required", import("@fp-ts/
|
|
25
|
-
parent: import("@effect-app/schema").Property<typeof RequestContextParent, "optional", import("@fp-ts/
|
|
26
|
-
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/
|
|
27
|
-
name: import("@effect-app/schema").Property<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>>>, "required", import("@fp-ts/
|
|
28
|
-
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/
|
|
29
|
-
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/
|
|
24
|
+
}, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
25
|
+
parent: import("@effect-app/schema").Property<typeof RequestContextParent, "optional", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
26
|
+
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
27
|
+
name: import("@effect-app/schema").Property<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>>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
28
|
+
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
29
|
+
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => Date]>>;
|
|
30
30
|
}>, RequestContext, RequestContext.ConstructorInput, RequestContext.Encoded, RequestContext.Props> & import("@effect-app/schema").PropsExtensions<RequestContext.Props>;
|
|
31
31
|
/**
|
|
32
32
|
* @tsplus type RequestContext
|
package/dist/api/codec.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/codec.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
5
3
|
import * as MO from "@effect-app/schema";
|
|
@@ -9,11 +7,11 @@ export function makeCodec(self) {
|
|
|
9
7
|
// TODO: strict
|
|
10
8
|
const decode = (e, env) => parse(e, env);
|
|
11
9
|
const enc = Encoder.for(self);
|
|
12
|
-
const encode = (u) =>
|
|
10
|
+
const encode = (u) => tsplus_module_1.sync(() => enc(u));
|
|
13
11
|
const encodeToMap = toMap(encode);
|
|
14
12
|
return [decode, encode, encodeToMap];
|
|
15
13
|
}
|
|
16
14
|
function toMap(encode) {
|
|
17
|
-
return (a) =>
|
|
15
|
+
return (a) => tsplus_module_1.map(tsplus_module_2.ext_collectAll(a.map(task => tsplus_module_1.tuple(tsplus_module_1.sync(() => task.id), encode(task)))), _ => new Map(_));
|
|
18
16
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL2FwaS9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUdwRCxNQUFNLFVBQVUsU0FBUyxDQU12QixJQUFxRTtJQUNyRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFVLEVBQUUsR0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLHFCQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQVUsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQThCLE1BQXlDO0lBQ25GLE9BQU8sQ0FBQyxDQUFtQixFQUFFLEVBQUUsQ0FDN0Isb0JBQUEsK0JBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFhLDJCQUFPLElBQUksQ0FBQyxFQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxFQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultErrorHandler.d.ts","sourceRoot":"","sources":["../../_src/api/defaultErrorHandler.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,8BAA8B,EAC9B,iBAAiB,EACjB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EACrB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,eAAe,EAAE,cAAc,EAC/B,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,uEAgBrC;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,CAAC,EAAE,cAAc,EACjB,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,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,8BAA8B,EAC9B,iBAAiB,EACjB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,IAAI,EAAE,OAAO,CAAC,OAAO,EACrB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,eAAe,EAAE,cAAc,EAC/B,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,uEAgBrC;AAKD,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,CAAC,EAAE,cAAc,EACjB,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,uEAwCrC;AAED,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,8BAA8B,CAAA"}
|
|
@@ -1,37 +1,36 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/defaultErrorHandler.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Cause";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
6
4
|
import * as tsplus_module_4 from "@effect/io/Schedule";
|
|
7
5
|
import { logRequestError } from "./reportError.js";
|
|
8
6
|
export function defaultBasicErrorHandler(_req, res, _requestContext, r2) {
|
|
9
|
-
return
|
|
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_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
|
|
10
8
|
res.status(400).send(err.errors);
|
|
11
|
-
}))
|
|
9
|
+
}))
|
|
12
10
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
13
|
-
);
|
|
11
|
+
, (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));
|
|
14
12
|
}
|
|
15
|
-
const optimisticConcurrencySchedule = tsplus_module_4.
|
|
13
|
+
const optimisticConcurrencySchedule = tsplus_module_4.once() &&
|
|
14
|
+
tsplus_module_4.recurWhile(a => a._tag === "OptimisticConcurrencyException");
|
|
16
15
|
export function defaultErrorHandler(req, res, _, r2) {
|
|
17
|
-
const r3 =
|
|
18
|
-
?
|
|
19
|
-
: r2
|
|
20
|
-
return
|
|
16
|
+
const r3 = req.method === "PATCH"
|
|
17
|
+
? tsplus_module_1.retry(r2, optimisticConcurrencySchedule)
|
|
18
|
+
: r2;
|
|
19
|
+
return tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r3, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
|
|
20
|
+
res.status(400).send(err.errors);
|
|
21
|
+
})), "NotFoundError", err => tsplus_module_1.sync(() => {
|
|
22
|
+
res.status(404).send(err);
|
|
23
|
+
})), "NotLoggedInError", err => tsplus_module_1.sync(() => {
|
|
24
|
+
res.status(401).send(err);
|
|
25
|
+
})), "UnauthorizedError", err => tsplus_module_1.sync(() => {
|
|
26
|
+
res.status(403).send(err);
|
|
27
|
+
})), "InvalidStateError", err => tsplus_module_1.sync(() => {
|
|
28
|
+
res.status(422).send(err);
|
|
29
|
+
})), "OptimisticConcurrencyException", err => tsplus_module_1.sync(() => {
|
|
21
30
|
// 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
|
|
22
31
|
res.status(412).send(err);
|
|
23
|
-
}))
|
|
24
|
-
res.status(422).send(err);
|
|
25
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":63:6")(tsplus_module_1.catchTag("UnauthorizedError", err => tracer_1.withCallTrace(fileName_1 + ":64:7")(tsplus_module_1.sync(() => {
|
|
26
|
-
res.status(403).send(err);
|
|
27
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":59:6")(tsplus_module_1.catchTag("NotLoggedInError", err => tracer_1.withCallTrace(fileName_1 + ":60:7")(tsplus_module_1.sync(() => {
|
|
28
|
-
res.status(401).send(err);
|
|
29
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":55:6")(tsplus_module_1.catchTag("NotFoundError", err => tracer_1.withCallTrace(fileName_1 + ":56:7")(tsplus_module_1.sync(() => {
|
|
30
|
-
res.status(404).send(err);
|
|
31
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":51:6")(tsplus_module_1.catchTag("ValidationError", err => tracer_1.withCallTrace(fileName_1 + ":52:7")(tsplus_module_1.sync(() => {
|
|
32
|
-
res.status(400).send(err.errors);
|
|
33
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":50:6")(tsplus_module_1.tapErrorCause(cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit))(r3)))))))
|
|
32
|
+
}))
|
|
34
33
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
35
|
-
);
|
|
34
|
+
, (err) => tsplus_module_1.flatMap(tsplus_module_1.map(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_1.die));
|
|
36
35
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL2RlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVsRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLElBQXFCLEVBQ3JCLEdBQXFCLEVBQ3JCLGVBQStCLEVBQy9CLEVBQW9DO0lBRXBDLE9BQU8seUJBQUEseUJBQUEsOEJBQUEsRUFBRSxFQUNRLEtBQUssQ0FBQyxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDdkUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDakMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNNLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sNkJBQTZCLEdBQUcsc0JBQWU7SUFDbkQsMkJBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXhGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBb0IsRUFDcEIsR0FBcUIsRUFDckIsQ0FBaUIsRUFDakIsRUFBb0M7SUFFcEMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE9BQU8seUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEsOEJBQUEsRUFBRSxFQUNRLEtBQUssQ0FBQyxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDdkUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDakMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFDLEVBQ0ssZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQy9CLHFCQUFPLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDLEVBQ0ssa0JBQWtCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDbEMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLENBQUMsRUFDSyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNuQyxxQkFBTyxHQUFHLEVBQUU7UUFDVixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQyxFQUNLLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ25DLHFCQUFPLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDLEVBQ0ssZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDaEQscUJBQU8sR0FBRyxFQUFFO1FBQ1YsNElBQTRJO1FBQzVJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNNLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQyJ9
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/express/makeJsonSchema.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@fp-ts/data/Chunk";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
5
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
@@ -10,7 +8,7 @@ const rx = /:(\w+)/g;
|
|
|
10
8
|
* Work in progress JSONSchema generator.
|
|
11
9
|
*/
|
|
12
10
|
export function makeJsonSchema(r) {
|
|
13
|
-
return
|
|
11
|
+
return tsplus_module_3.map(tsplus_module_2.ext_forEach(tsplus_module_1.fromIterable(r), RS.makeFromSchema), e => {
|
|
14
12
|
const map = ({ method, path, responses, ...rest }) => ({
|
|
15
13
|
[method]: {
|
|
16
14
|
...rest,
|
|
@@ -28,7 +26,7 @@ export function makeJsonSchema(r) {
|
|
|
28
26
|
};
|
|
29
27
|
return prev;
|
|
30
28
|
})(e);
|
|
31
|
-
})
|
|
29
|
+
});
|
|
32
30
|
}
|
|
33
31
|
class Response {
|
|
34
32
|
constructor(statusCode, type // string | JSONSchema | SubSchema
|
|
@@ -37,4 +35,4 @@ class Response {
|
|
|
37
35
|
this.type = type;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0M7SUFDL0QsT0FBTyxvQkFBQSw0QkFBQSw2QkFBbUIsQ0FBQyxDQUFDLEVBQ1gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUM1QixDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNSLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUcsU0FBd0IsQ0FBQyxNQUFNLENBQ3pDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtvQkFDL0IsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZEO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLHVCQUNMLEVBQTZELEVBQzdELENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBVEksQ0FBQyxDQVVQLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFDWixZQUNrQixVQUFrQixFQUNsQixJQUFTLENBQUMsa0NBQWtDOztRQUQ1QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQUs7SUFDeEIsQ0FBQztDQUNMIn0=
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/express/makeOpenApiSpecs.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Ref";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
3
|
import { References } from "@effect-app/infra-adapters/Openapi/atlas-plutus/Schema/index";
|
|
6
4
|
import { makeJsonSchema } from "./makeJsonSchema.js";
|
|
7
5
|
export function makeOpenApiSpecs(rdescs, info) {
|
|
8
|
-
return
|
|
9
|
-
const ref = yield* $(
|
|
10
|
-
const paths = yield* $(
|
|
6
|
+
return tsplus_module_2.gen(function* ($) {
|
|
7
|
+
const ref = yield* $(tsplus_module_1.make(new Map()));
|
|
8
|
+
const paths = yield* $(tsplus_module_2.provideService(makeJsonSchema(rdescs), References, { ref }));
|
|
11
9
|
const refs = yield* $(tsplus_module_1.get(ref));
|
|
12
10
|
const parameterRefs = {}; // todos
|
|
13
11
|
const schemas = {};
|
|
@@ -49,6 +47,6 @@ export function makeOpenApiSpecs(rdescs, info) {
|
|
|
49
47
|
components
|
|
50
48
|
// test,
|
|
51
49
|
};
|
|
52
|
-
})
|
|
50
|
+
});
|
|
53
51
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFnQixVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBQyxHQUFHLEVBQUssQ0FBQTtRQUM5QixNQUFNLGFBQWEsR0FBd0IsRUFBRSxDQUFBLENBQUMsUUFBUTtRQUN0RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsWUFBWSxFQUFFLEtBQUs7YUFDcEI7U0FDRixDQUFBLENBQUMsbURBQW1EO1FBQ3JELE1BQU0sVUFBVSxHQUFHLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUE7UUFFMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsZ0RBQWdEO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDN0I7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLE9BQU87WUFDaEIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QjtZQUNELElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSztZQUNMLFVBQVU7WUFDVixRQUFRO1NBQ1QsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -27,11 +27,11 @@ export type Request2<Path extends string, Method extends Methods, ReqA> = MO.Req
|
|
|
27
27
|
export type Encode<A, E> = (a: A) => E;
|
|
28
28
|
export declare function decodeErrors(x: unknown): unknown[];
|
|
29
29
|
export declare function parseRequestParams<PathA, CookieA, QueryA, BodyA, HeaderA>(parsers: RequestParsers<PathA, CookieA, QueryA, BodyA, HeaderA>): ({ body, cookies, headers, params, query }: express.Request) => import("@effect/io/Effect").Effect<never, ValidationError, {
|
|
30
|
-
body: import("@fp-ts/
|
|
31
|
-
cookie: import("@fp-ts/
|
|
32
|
-
headers: import("@fp-ts/
|
|
33
|
-
path: import("@fp-ts/
|
|
34
|
-
query: import("@fp-ts/
|
|
30
|
+
body: import("@fp-ts/core/Option").Option<BodyA>;
|
|
31
|
+
cookie: import("@fp-ts/core/Option").Option<CookieA>;
|
|
32
|
+
headers: import("@fp-ts/core/Option").Option<HeaderA>;
|
|
33
|
+
path: import("@fp-ts/core/Option").Option<PathA>;
|
|
34
|
+
query: import("@fp-ts/core/Option").Option<QueryA>;
|
|
35
35
|
}>;
|
|
36
36
|
export declare function respondSuccess<ReqA, A, E>(encodeResponse: (req: ReqA) => Encode<A, E>): (req: ReqA, res: express.Response) => (a: A) => import("@effect/io/Effect").Effect<never, never, void>;
|
|
37
37
|
export interface RequestHandlerOptRes<R, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA, ResE> {
|
|
@@ -4,7 +4,7 @@ import * as tsplus_module_1 from "@effect/io/Effect";
|
|
|
4
4
|
import * as tsplus_module_2 from "@effect/io/Exit";
|
|
5
5
|
import * as tsplus_module_3 from "@effect/io/Cause";
|
|
6
6
|
import * as tsplus_module_4 from "@effect-app/core/Function";
|
|
7
|
-
import * as tsplus_module_5 from "@fp-ts/
|
|
7
|
+
import * as tsplus_module_5 from "@fp-ts/core/Option";
|
|
8
8
|
import * as tsplus_module_6 from "@effect-app/core/Effect";
|
|
9
9
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
10
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
@@ -31,7 +31,38 @@ export function decodeErrors(x) {
|
|
|
31
31
|
// )
|
|
32
32
|
// const structValidation = DSL.structF(ValidationApplicative)
|
|
33
33
|
export function parseRequestParams(parsers) {
|
|
34
|
-
return ({ body, cookies, headers, params, query }) =>
|
|
34
|
+
return ({ body, cookies, headers, params, query }) => tsplus_module_1.flatMap(tsplus_module_1.struct({
|
|
35
|
+
body: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
36
|
+
.parseBody(body)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
37
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
38
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
39
|
+
? { _tag: "Success", value: _.value }
|
|
40
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
41
|
+
cookie: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
42
|
+
.parseCookie(cookies)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
43
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
44
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
45
|
+
? { _tag: "Success", value: _.value }
|
|
46
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
47
|
+
headers: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
48
|
+
.parseHeaders(headers)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
49
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
50
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
51
|
+
? { _tag: "Success", value: _.value }
|
|
52
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
53
|
+
query: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
54
|
+
.parseQuery(query)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
55
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
56
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
57
|
+
? { _tag: "Success", value: _.value }
|
|
58
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
59
|
+
path: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
60
|
+
.parsePath(params)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
61
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
62
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
63
|
+
? { _tag: "Success", value: _.value }
|
|
64
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))
|
|
65
|
+
}), ({ body, cookie, headers, path, query }) => {
|
|
35
66
|
const errors = [];
|
|
36
67
|
if (body._tag === "Failure") {
|
|
37
68
|
errors.push(makeError("body")(body.errors));
|
|
@@ -49,47 +80,16 @@ export function parseRequestParams(parsers) {
|
|
|
49
80
|
errors.push(makeError("path")(path.errors));
|
|
50
81
|
}
|
|
51
82
|
if (errors.length) {
|
|
52
|
-
return
|
|
83
|
+
return tsplus_module_1.fail(new ValidationError(errors));
|
|
53
84
|
}
|
|
54
|
-
return
|
|
85
|
+
return tsplus_module_1.sync(() => ({
|
|
55
86
|
body: body.value,
|
|
56
87
|
cookie: cookie.value,
|
|
57
88
|
headers: headers.value,
|
|
58
89
|
path: path.value,
|
|
59
90
|
query: query.value
|
|
60
|
-
}))
|
|
61
|
-
})
|
|
62
|
-
body: tracer_1.withCallTrace(fileName_1 + ":75:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
63
|
-
? tracer_1.withCallTrace(fileName_1 + ":77:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
64
|
-
: tracer_1.withCallTrace(fileName_1 + ":78:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
65
|
-
? { _tag: "Success", value: _.value }
|
|
66
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
67
|
-
.parseBody(body))),
|
|
68
|
-
cookie: tracer_1.withCallTrace(fileName_1 + ":86:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
69
|
-
? tracer_1.withCallTrace(fileName_1 + ":88:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
70
|
-
: tracer_1.withCallTrace(fileName_1 + ":89:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
71
|
-
? { _tag: "Success", value: _.value }
|
|
72
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
73
|
-
.parseCookie(cookies))),
|
|
74
|
-
headers: tracer_1.withCallTrace(fileName_1 + ":97:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
75
|
-
? tracer_1.withCallTrace(fileName_1 + ":99:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
76
|
-
: tracer_1.withCallTrace(fileName_1 + ":100:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
77
|
-
? { _tag: "Success", value: _.value }
|
|
78
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
79
|
-
.parseHeaders(headers))),
|
|
80
|
-
query: tracer_1.withCallTrace(fileName_1 + ":108:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
81
|
-
? tracer_1.withCallTrace(fileName_1 + ":110:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
82
|
-
: tracer_1.withCallTrace(fileName_1 + ":111:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
83
|
-
? { _tag: "Success", value: _.value }
|
|
84
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
85
|
-
.parseQuery(query))),
|
|
86
|
-
path: tracer_1.withCallTrace(fileName_1 + ":119:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
87
|
-
? tracer_1.withCallTrace(fileName_1 + ":121:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
88
|
-
: tracer_1.withCallTrace(fileName_1 + ":122:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
89
|
-
? { _tag: "Success", value: _.value }
|
|
90
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
91
|
-
.parsePath(params)))
|
|
92
|
-
})));
|
|
91
|
+
}));
|
|
92
|
+
});
|
|
93
93
|
}
|
|
94
94
|
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
95
|
// function mapErrors_<E, NE, NER extends Record<string, Effect<any, E, any>>>(
|
|
@@ -112,22 +112,22 @@ function makeError(type) {
|
|
|
112
112
|
return (e) => [{ type, errors: decodeErrors(e) }];
|
|
113
113
|
}
|
|
114
114
|
export function respondSuccess(encodeResponse) {
|
|
115
|
-
return (req, res) => tsplus_module_4.flow(encodeResponse(req), tsplus_module_1.succeed, _ =>
|
|
115
|
+
return (req, res) => tsplus_module_4.flow(encodeResponse(req), tsplus_module_1.succeed, _ => tsplus_module_1.flatMap(_, r => tsplus_module_1.sync(() => {
|
|
116
116
|
r === undefined
|
|
117
117
|
? res.status(204).send()
|
|
118
118
|
: res.status(200).send(r === null ? JSON.stringify(null) : r);
|
|
119
|
-
})))
|
|
119
|
+
})));
|
|
120
120
|
}
|
|
121
121
|
export function makeRequestParsers(Request) {
|
|
122
|
-
const ph =
|
|
122
|
+
const ph = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Headers)))));
|
|
123
123
|
const parseHeaders = (u) => tracer_1.withCallTrace(fileName_1 + ":309:43")(tsplus_module_6.flatMapOpt(ph, d => d(u)));
|
|
124
|
-
const pq =
|
|
124
|
+
const pq = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Query)))));
|
|
125
125
|
const parseQuery = (u) => tracer_1.withCallTrace(fileName_1 + ":317:41")(tsplus_module_6.flatMapOpt(pq, d => d(u)));
|
|
126
|
-
const pb =
|
|
126
|
+
const pb = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Body)))));
|
|
127
127
|
const parseBody = (u) => tracer_1.withCallTrace(fileName_1 + ":325:40")(tsplus_module_6.flatMapOpt(pb, d => d(u)));
|
|
128
|
-
const pp =
|
|
128
|
+
const pp = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Path)))));
|
|
129
129
|
const parsePath = (u) => tracer_1.withCallTrace(fileName_1 + ":333:40")(tsplus_module_6.flatMapOpt(pp, d => d(u)));
|
|
130
|
-
const pc =
|
|
130
|
+
const pc = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Cookie)))));
|
|
131
131
|
const parseCookie = (u) => tracer_1.withCallTrace(fileName_1 + ":341:42")(tsplus_module_6.flatMapOpt(pc, d => d(u)));
|
|
132
132
|
return {
|
|
133
133
|
parseBody,
|
|
@@ -137,4 +137,4 @@ export function makeRequestParsers(Request) {
|
|
|
137
137
|
parseQuery
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL3NjaGVtYS9yZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBd0NwRCxvREFBb0Q7QUFDcEQsaUNBQWlDO0FBQ2pDLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFDbkMsTUFBTTtBQUNOLG1FQUFtRTtBQUNuRSxpQ0FBaUM7QUFDakMsTUFBTTtBQUNOLHFDQUFxQztBQUNyQyxJQUFJO0FBQ0osTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFVO0lBQ3JDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNaLENBQUM7QUFFRCxpRUFBaUU7QUFDakUsK0ZBQStGO0FBQy9GLDRCQUE0QjtBQUM1QixNQUFNO0FBQ04sSUFBSTtBQUVKLDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQStEO0lBRS9ELE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW1CLEVBQUUsRUFBRSxDQUNwRSx3QkFBQSx1QkFBYztRQUNaLElBQUksRUFBRSw2Q0FBQSxPQUFPO2FBQ1YsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUNGLENBQUMsQ0FBQyxFQUFFLENBQ2hCLDBCQUFBLENBQUMsQ0FBWSxJQUFJLENBQUMsMEJBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBWTtZQUNuQyxDQUFDLENBQUUsOEJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQTJDO1lBQ2hGLENB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
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/express/schema/routing.ts";
|
|
3
|
-
import * as tsplus_module_1 from "@fp-ts/data/Option";
|
|
1
|
+
import * as tsplus_module_1 from "@effect-app/core/Option";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
|
-
import * as tsplus_module_3 from "@
|
|
3
|
+
import * as tsplus_module_3 from "@fp-ts/core/Option";
|
|
6
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
5
|
import * as MO from "@effect-app/schema";
|
|
8
6
|
import { isObjectSchema } from "@effect-app/infra-adapters/Openapi/atlas-plutus";
|
|
@@ -24,16 +22,16 @@ export function makeFromSchema(e) {
|
|
|
24
22
|
const Res = r ? MO.extractSchema(r) : MO.Void;
|
|
25
23
|
// TODO EffectOpt.fromNullable(Req.Headers).flatMapOpt(jsonSchema)
|
|
26
24
|
// TODO: use the path vs body etc serialisation also in the Client.
|
|
27
|
-
const makeReqQuerySchema =
|
|
28
|
-
const makeReqHeadersSchema =
|
|
29
|
-
const makeReqCookieSchema =
|
|
30
|
-
const makeReqPathSchema =
|
|
31
|
-
const makeReqBodySchema =
|
|
25
|
+
const makeReqQuerySchema = tsplus_module_2.flatMap(tsplus_module_2.sync(() => tsplus_module_3.fromNullable(Req.Query)), _ => tsplus_module_3.match(() => tsplus_module_2.sync(() => tsplus_module_1.none), _ => tsplus_module_2.map(jsonSchema(_), tsplus_module_3.some))(_));
|
|
26
|
+
const makeReqHeadersSchema = tsplus_module_2.flatMap(tsplus_module_2.sync(() => tsplus_module_3.fromNullable(Req.Headers)), _ => tsplus_module_3.match(() => tsplus_module_2.sync(() => tsplus_module_1.none), _ => tsplus_module_2.map(jsonSchema(_), tsplus_module_3.some))(_));
|
|
27
|
+
const makeReqCookieSchema = tsplus_module_2.flatMap(tsplus_module_2.sync(() => tsplus_module_3.fromNullable(Req.Cookie)), _ => tsplus_module_3.match(() => tsplus_module_2.sync(() => tsplus_module_1.none), _ => tsplus_module_2.map(jsonSchema(_), tsplus_module_3.some))(_));
|
|
28
|
+
const makeReqPathSchema = tsplus_module_2.flatMap(tsplus_module_2.sync(() => tsplus_module_3.fromNullable(Req.Path)), _ => tsplus_module_3.match(() => tsplus_module_2.sync(() => tsplus_module_1.none), _ => tsplus_module_2.map(jsonSchema(_), tsplus_module_3.some))(_));
|
|
29
|
+
const makeReqBodySchema = tsplus_module_2.flatMap(tsplus_module_2.sync(() => tsplus_module_3.fromNullable(Req.Body)), _ => tsplus_module_3.match(() => tsplus_module_2.sync(() => tsplus_module_1.none), _ => tsplus_module_2.map(jsonSchema(_), tsplus_module_3.some))(_));
|
|
32
30
|
// const makeReqSchema = schema(Req)
|
|
33
31
|
const makeResSchema = jsonSchema_(Res);
|
|
34
32
|
function makeParameters(inn) {
|
|
35
33
|
return (a) => {
|
|
36
|
-
return
|
|
34
|
+
return tsplus_module_3.getOrElse(() => [])(tsplus_module_3.map(x => {
|
|
37
35
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
38
36
|
return Object.keys(x.properties).map(p => {
|
|
39
37
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
@@ -41,10 +39,18 @@ export function makeFromSchema(e) {
|
|
|
41
39
|
const required = Boolean(x.required?.includes(p));
|
|
42
40
|
return { name: p, in: inn, required, schema };
|
|
43
41
|
});
|
|
44
|
-
})(
|
|
42
|
+
})(tsplus_module_3.flatMap(o => (isObjectSchema(o) ? tsplus_module_3.some(o) : tsplus_module_1.none))(a)));
|
|
45
43
|
};
|
|
46
44
|
}
|
|
47
|
-
return
|
|
45
|
+
return tsplus_module_2.map(tsplus_module_2.struct({
|
|
46
|
+
req: jsonSchema(Req.Model),
|
|
47
|
+
reqQuery: makeReqQuerySchema,
|
|
48
|
+
reqHeaders: makeReqHeadersSchema,
|
|
49
|
+
reqBody: makeReqBodySchema,
|
|
50
|
+
reqPath: makeReqPathSchema,
|
|
51
|
+
reqCookie: makeReqCookieSchema,
|
|
52
|
+
res: makeResSchema
|
|
53
|
+
}), _ => {
|
|
48
54
|
// console.log("$$$ REQ", _.req)
|
|
49
55
|
const isEmpty = !e.handler.Response || e.handler.Response === MO.Void;
|
|
50
56
|
return {
|
|
@@ -60,7 +66,7 @@ export function makeFromSchema(e) {
|
|
|
60
66
|
...makeParameters("header")(_.reqHeaders),
|
|
61
67
|
...makeParameters("cookie")(_.reqCookie)
|
|
62
68
|
],
|
|
63
|
-
requestBody:
|
|
69
|
+
requestBody: tsplus_module_1.getOrUndefined(tsplus_module_3.map(schema => ({
|
|
64
70
|
content: { "application/json": { schema } }
|
|
65
71
|
}))(_.reqBody)),
|
|
66
72
|
responses: [
|
|
@@ -75,15 +81,7 @@ export function makeFromSchema(e) {
|
|
|
75
81
|
? [new Response(404, { description: "NotFoundError" })]
|
|
76
82
|
: [])
|
|
77
83
|
};
|
|
78
|
-
})
|
|
79
|
-
req: jsonSchema(Req.Model),
|
|
80
|
-
reqQuery: makeReqQuerySchema,
|
|
81
|
-
reqHeaders: makeReqHeadersSchema,
|
|
82
|
-
reqBody: makeReqBodySchema,
|
|
83
|
-
reqPath: makeReqPathSchema,
|
|
84
|
-
reqCookie: makeReqCookieSchema,
|
|
85
|
-
res: makeResSchema
|
|
86
|
-
})));
|
|
84
|
+
});
|
|
87
85
|
}
|
|
88
86
|
class Response {
|
|
89
87
|
constructor(statusCode, type // string | JSONSchema | SubSchema
|
|
@@ -92,4 +90,4 @@ class Response {
|
|
|
92
90
|
this.type = type;
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3Mvc2NoZW1hL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFJeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlEQUFpRCxDQUFBO0FBQ2hGLE9BQU8sS0FBSyxPQUFPLE1BQU0sMENBQTBDLENBQUE7QUFHbkUsTUFBTSxVQUFVLHFCQUFxQixDQUErQixDQUFJO0lBQ3RFLE9BQU8sQ0FBdUIsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxHQUFxQjtJQUVyQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBa0NELE1BQU0sVUFBVSxtQkFBbUIsQ0FZakMsSUFBWSxFQUNaLE1BQWMsRUFDZCxPQVVDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBVzdDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBZ0U7SUFFaEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQTtJQUMvQixNQUFNLFVBQVUsR0FBRyxDQUFPLENBQWtCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUE7SUFDbkUsTUFBTSxDQUFDLEdBQUcsZUFBZSxJQUFJLElBQUksQ0FBQTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUE7SUFDN0Msa0VBQWtFO0lBQ2xFLG1FQUFtRTtJQUNuRSxNQUFNLGtCQUFrQixHQUFHLHdCQUFBLDJCQUFPLDZCQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUN6RSxzQkFDRSxHQUFHLEVBQUUsQ0FBQyxnREFBZ0IsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUFjLEVBRmxDLENBQUMsQ0FHQSxDQUNGLENBQUE7SUFDRCxNQUFNLG9CQUFvQixHQUFHLHdCQUFBLDJCQUFPLDZCQUFpQixHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUM3RSxzQkFDRSxHQUFHLEVBQUUsQ0FBQyxnREFBZ0IsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUFjLEVBRmxDLENBQUMsQ0FHQSxDQUNGLENBQUE7SUFDRCxNQUFNLG1CQUFtQixHQUFHLHdCQUFBLDJCQUFPLDZCQUFpQixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUMzRSxzQkFDRSxHQUFHLEVBQUUsQ0FBQyxnREFBZ0IsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUFjLEVBRmxDLENBQUMsQ0FHQSxDQUNGLENBQUE7SUFDRCxNQUFNLGlCQUFpQixHQUFHLHdCQUFBLDJCQUFPLDZCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUN2RSxzQkFDRSxHQUFHLEVBQUUsQ0FBQyxnREFBZ0IsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUFjLEVBRmxDLENBQUMsQ0FHQSxDQUNGLENBQUE7SUFDRCxNQUFNLGlCQUFpQixHQUFHLHdCQUFBLDJCQUFPLDZCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBUyxDQUFDLENBQUMsRUFBRSxDQUN2RSxzQkFDRSxHQUFHLEVBQUUsQ0FBQyxnREFBZ0IsRUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUFjLEVBRmxDLENBQUMsQ0FHQSxDQUNGLENBQUE7SUFDRCxvQ0FBb0M7SUFFcEMsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXRDLFNBQVMsY0FBYyxDQUFDLEdBQXNCO1FBQzVDLE9BQU8sQ0FBQyxDQUE4QixFQUFFLEVBQUU7WUFDeEMsT0FBTywwQkFXTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBWGQsb0JBRUEsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1Asb0VBQW9FO2dCQUNwRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDeEMsb0VBQW9FO29CQUNwRSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUMvQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUE7Z0JBQy9DLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxFQVZJLHdCQUNJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQVMsQ0FBQyxFQURoRCxDQUFDLENBQ2dELENBU3BELENBQ2tCLENBQUE7UUFDeEIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sb0JBQUEsdUJBQWM7UUFDbkIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzFCLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixHQUFHLEVBQUUsYUFBYTtLQUNuQixDQUFDLEVBQUssQ0FBQyxDQUFDLEVBQUU7UUFDVCxnQ0FBZ0M7UUFDaEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQ3JFLE9BQU87WUFDTCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXO1lBQy9CLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU87WUFDdkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSztZQUN6QixVQUFVLEVBQUU7Z0JBQ1YsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDcEMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDdEMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztnQkFDekMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUN6QztZQUNELFdBQVcsaUNBQUUsb0JBQWMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFO2FBQzVDLENBQUMsRUFGVyxDQUFDLENBQUMsT0FBTyxDQUVuQixDQUFNO1lBQ1QsU0FBUyxFQUFFO2dCQUNULE9BQU87b0JBQ0wsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDN0MsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRTt3QkFDbEIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtxQkFDbkQsQ0FBQztnQkFDSixJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQzthQUN0RCxDQUFDLE1BQU0sQ0FDTixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPO2dCQUM3QixDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FDUDtTQUNGLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFDWixZQUNrQixVQUFrQixFQUNsQixJQUFTLENBQUMsa0NBQWtDOztRQUQ1QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQUs7SUFDeEIsQ0FBQztDQUNMIn0=
|