@effect/platform 0.69.30 → 0.70.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/README.md +35 -26
- package/dist/cjs/HttpApiEndpoint.js +44 -13
- package/dist/cjs/HttpApiEndpoint.js.map +1 -1
- package/dist/cjs/HttpApiSchema.js +20 -2
- package/dist/cjs/HttpApiSchema.js.map +1 -1
- package/dist/cjs/HttpIncomingMessage.js +3 -2
- package/dist/cjs/HttpIncomingMessage.js.map +1 -1
- package/dist/cjs/HttpServerRequest.js.map +1 -1
- package/dist/cjs/OpenApiJsonSchema.js.map +1 -1
- package/dist/cjs/UrlParams.js +36 -8
- package/dist/cjs/UrlParams.js.map +1 -1
- package/dist/cjs/internal/httpServerRequest.js.map +1 -1
- package/dist/cjs/internal/multipart.js +21 -8
- package/dist/cjs/internal/multipart.js.map +1 -1
- package/dist/dts/HttpApiEndpoint.d.ts +82 -7
- package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/dts/HttpApiSchema.d.ts +35 -3
- package/dist/dts/HttpApiSchema.d.ts.map +1 -1
- package/dist/dts/HttpIncomingMessage.d.ts +2 -2
- package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/dts/HttpServerRequest.d.ts +1 -1
- package/dist/dts/HttpServerRequest.d.ts.map +1 -1
- package/dist/dts/Multipart.d.ts +1 -1
- package/dist/dts/Multipart.d.ts.map +1 -1
- package/dist/dts/OpenApiJsonSchema.d.ts +2 -0
- package/dist/dts/OpenApiJsonSchema.d.ts.map +1 -1
- package/dist/dts/UrlParams.d.ts +28 -4
- package/dist/dts/UrlParams.d.ts.map +1 -1
- package/dist/esm/HttpApiEndpoint.js +44 -13
- package/dist/esm/HttpApiEndpoint.js.map +1 -1
- package/dist/esm/HttpApiSchema.js +17 -0
- package/dist/esm/HttpApiSchema.js.map +1 -1
- package/dist/esm/HttpIncomingMessage.js +3 -2
- package/dist/esm/HttpIncomingMessage.js.map +1 -1
- package/dist/esm/HttpServerRequest.js.map +1 -1
- package/dist/esm/OpenApiJsonSchema.js.map +1 -1
- package/dist/esm/UrlParams.js +33 -6
- package/dist/esm/UrlParams.js.map +1 -1
- package/dist/esm/internal/httpServerRequest.js.map +1 -1
- package/dist/esm/internal/multipart.js +21 -8
- package/dist/esm/internal/multipart.js.map +1 -1
- package/package.json +2 -2
- package/src/HttpApiEndpoint.ts +154 -39
- package/src/HttpApiSchema.ts +48 -3
- package/src/HttpIncomingMessage.ts +8 -4
- package/src/HttpServerRequest.ts +5 -1
- package/src/Multipart.ts +1 -1
- package/src/OpenApiJsonSchema.ts +2 -0
- package/src/UrlParams.ts +39 -7
- package/src/internal/httpServerRequest.ts +5 -1
- package/src/internal/multipart.ts +27 -21
|
@@ -260,20 +260,33 @@ export const toPersisted = (stream, writeFile = defaultWriteFile) => Effect.gen(
|
|
|
260
260
|
const fs = yield* FileSystem.FileSystem;
|
|
261
261
|
const path_ = yield* Path.Path;
|
|
262
262
|
const dir = yield* fs.makeTempDirectoryScoped();
|
|
263
|
-
|
|
263
|
+
const persisted = Object.create(null);
|
|
264
|
+
yield* Stream.runForEach(stream, part => {
|
|
264
265
|
if (part._tag === "Field") {
|
|
265
|
-
|
|
266
|
-
|
|
266
|
+
if (!(part.key in persisted)) {
|
|
267
|
+
persisted[part.key] = part.value;
|
|
268
|
+
} else if (typeof persisted[part.key] === "string") {
|
|
269
|
+
persisted[part.key] = [persisted[part.key], part.value];
|
|
270
|
+
} else {
|
|
271
|
+
;
|
|
272
|
+
persisted[part.key].push(part.value);
|
|
273
|
+
}
|
|
274
|
+
return Effect.void;
|
|
275
|
+
} else if (part.name === "") {
|
|
276
|
+
return Effect.void;
|
|
267
277
|
}
|
|
268
278
|
const file = part;
|
|
269
279
|
const path = path_.join(dir, path_.basename(file.name).slice(-128));
|
|
270
|
-
|
|
271
|
-
|
|
280
|
+
const filePart = new PersistedFileImpl(file.key, file.name, file.contentType, path);
|
|
281
|
+
if (Array.isArray(persisted[part.key])) {
|
|
282
|
+
;
|
|
283
|
+
persisted[part.key].push(filePart);
|
|
284
|
+
} else {
|
|
285
|
+
persisted[part.key] = [filePart];
|
|
272
286
|
}
|
|
273
|
-
;
|
|
274
|
-
persisted[part.key].push(new PersistedFileImpl(file.key, file.name, file.contentType, path));
|
|
275
|
-
return Effect.as(writeFile(path, file), persisted);
|
|
287
|
+
return writeFile(path, file);
|
|
276
288
|
});
|
|
289
|
+
return persisted;
|
|
277
290
|
}).pipe(Effect.catchTags({
|
|
278
291
|
SystemError: cause => Effect.fail(new MultipartError({
|
|
279
292
|
reason: "InternalError",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multipart.js","names":["Channel","Chunk","Effect","Exit","FiberRef","dual","globalValue","Inspectable","Mailbox","Option","Predicate","Schema","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","pipe","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","withFiberRuntime","fiber","getFiberRef","succeed","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","all","config","mailbox","partsBuffer","exit","input","awaitRead","void","emit","element","offer","error","cause","failCause","end","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","suspend","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","takeAll","sync","forEach","partsChannel","writeExit","embedInput","shutdown","self","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","gen","path_","dir","makeTempDirectoryScoped","runFoldEffect","Object","create","part","join","basename","slice","isArray","PersistedFileImpl","as","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"multipart.js","names":["Channel","Chunk","Effect","Exit","FiberRef","dual","globalValue","Inspectable","Mailbox","Option","Predicate","Schema","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","pipe","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","withFiberRuntime","fiber","getFiberRef","succeed","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","all","config","mailbox","partsBuffer","exit","input","awaitRead","void","emit","element","offer","error","cause","failCause","end","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","suspend","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","takeAll","sync","forEach","partsChannel","writeExit","embedInput","shutdown","self","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","gen","path_","dir","makeTempDirectoryScoped","Object","create","runForEach","part","join","basename","slice","filePart","PersistedFileImpl","isArray","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.70.0",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"multipasta": "^0.2.5"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"effect": "^3.
|
|
17
|
+
"effect": "^3.11.0"
|
|
18
18
|
},
|
|
19
19
|
"publishConfig": {
|
|
20
20
|
"provenance": true
|
package/src/HttpApiEndpoint.ts
CHANGED
|
@@ -546,7 +546,7 @@ export declare namespace HttpApiEndpoint {
|
|
|
546
546
|
* @category models
|
|
547
547
|
*/
|
|
548
548
|
export type ValidateUrlParams<S extends Schema.Schema.Any> = S extends Schema.Schema<infer _A, infer _I, infer _R>
|
|
549
|
-
? [_I] extends [Readonly<Record<string, string | undefined>>] ? {}
|
|
549
|
+
? [_I] extends [Readonly<Record<string, string | ReadonlyArray<string> | undefined>>] ? {}
|
|
550
550
|
: `UrlParams schema must be encodeable to strings`
|
|
551
551
|
: {}
|
|
552
552
|
|
|
@@ -628,6 +628,47 @@ export declare namespace HttpApiEndpoint {
|
|
|
628
628
|
_RE | HttpApiMiddleware.HttpApiMiddleware.ErrorContext<R>
|
|
629
629
|
> :
|
|
630
630
|
never
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* @since 1.0.0
|
|
634
|
+
* @category models
|
|
635
|
+
*/
|
|
636
|
+
export type PathEntries<Schemas extends ReadonlyArray<HttpApiSchema.AnyString>> =
|
|
637
|
+
Extract<keyof Schemas, string> extends infer K ?
|
|
638
|
+
K extends keyof Schemas ? Schemas[K] extends HttpApiSchema.Param<infer _Name, infer _S> ? [_Name, _S] :
|
|
639
|
+
Schemas[K] extends HttpApiSchema.AnyString ? [K, Schemas[K]]
|
|
640
|
+
: never
|
|
641
|
+
: never
|
|
642
|
+
: never
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* @since 1.0.0
|
|
646
|
+
* @category models
|
|
647
|
+
*/
|
|
648
|
+
export type ExtractPath<Schemas extends ReadonlyArray<HttpApiSchema.AnyString>> = {
|
|
649
|
+
readonly [Entry in PathEntries<Schemas> as Entry[0]]: Entry[1]["Type"]
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* @since 1.0.0
|
|
654
|
+
* @category models
|
|
655
|
+
*/
|
|
656
|
+
export type Constructor<Name extends string, Method extends HttpMethod> = <
|
|
657
|
+
const Schemas extends ReadonlyArray<HttpApiSchema.AnyString>
|
|
658
|
+
>(
|
|
659
|
+
segments: TemplateStringsArray,
|
|
660
|
+
...schemas: Schemas
|
|
661
|
+
) => HttpApiEndpoint<
|
|
662
|
+
Name,
|
|
663
|
+
Method,
|
|
664
|
+
Schemas["length"] extends 0 ? never : Types.Simplify<ExtractPath<Schemas>>,
|
|
665
|
+
never,
|
|
666
|
+
never,
|
|
667
|
+
never,
|
|
668
|
+
void,
|
|
669
|
+
never,
|
|
670
|
+
Schemas[number]["Context"]
|
|
671
|
+
>
|
|
631
672
|
}
|
|
632
673
|
|
|
633
674
|
const Proto = {
|
|
@@ -753,66 +794,140 @@ const makeProto = <
|
|
|
753
794
|
* @since 1.0.0
|
|
754
795
|
* @category constructors
|
|
755
796
|
*/
|
|
756
|
-
export const make = <Method extends HttpMethod>(method: Method)
|
|
757
|
-
<const Name extends string>(
|
|
758
|
-
name: Name,
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
797
|
+
export const make = <Method extends HttpMethod>(method: Method): {
|
|
798
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, Method>
|
|
799
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, Method>
|
|
800
|
+
} =>
|
|
801
|
+
((name: string, ...args: [HttpRouter.PathInput]) => {
|
|
802
|
+
if (args.length === 1) {
|
|
803
|
+
return makeProto({
|
|
804
|
+
name,
|
|
805
|
+
path: args[0],
|
|
806
|
+
method,
|
|
807
|
+
pathSchema: Option.none(),
|
|
808
|
+
urlParamsSchema: Option.none(),
|
|
809
|
+
payloadSchema: Option.none(),
|
|
810
|
+
headersSchema: Option.none(),
|
|
811
|
+
successSchema: HttpApiSchema.NoContent as any,
|
|
812
|
+
errorSchema: Schema.Never as any,
|
|
813
|
+
annotations: Context.empty(),
|
|
814
|
+
middlewares: new Set()
|
|
815
|
+
})
|
|
816
|
+
}
|
|
817
|
+
return (segments: TemplateStringsArray, ...schemas: ReadonlyArray<HttpApiSchema.AnyString>) => {
|
|
818
|
+
let path = segments[0] as HttpRouter.PathInput
|
|
819
|
+
let pathSchema = Option.none<Schema.Schema.Any>()
|
|
820
|
+
if (schemas.length > 0) {
|
|
821
|
+
const obj: Record<string, Schema.Schema.Any> = {}
|
|
822
|
+
for (let i = 0; i < schemas.length; i++) {
|
|
823
|
+
const schema = schemas[i]
|
|
824
|
+
const key = HttpApiSchema.getParam(schema.ast) ?? String(i)
|
|
825
|
+
obj[key] = schema
|
|
826
|
+
path += `:${key}${segments[i + 1]}`
|
|
827
|
+
}
|
|
828
|
+
pathSchema = Option.some(Schema.Struct(obj))
|
|
829
|
+
}
|
|
830
|
+
return makeProto({
|
|
831
|
+
name,
|
|
832
|
+
path,
|
|
833
|
+
method,
|
|
834
|
+
pathSchema,
|
|
835
|
+
urlParamsSchema: Option.none(),
|
|
836
|
+
payloadSchema: Option.none(),
|
|
837
|
+
headersSchema: Option.none(),
|
|
838
|
+
successSchema: HttpApiSchema.NoContent as any,
|
|
839
|
+
errorSchema: Schema.Never as any,
|
|
840
|
+
annotations: Context.empty(),
|
|
841
|
+
middlewares: new Set()
|
|
842
|
+
})
|
|
843
|
+
}
|
|
844
|
+
}) as any
|
|
774
845
|
|
|
775
846
|
/**
|
|
776
847
|
* @since 1.0.0
|
|
777
848
|
* @category constructors
|
|
778
849
|
*/
|
|
779
|
-
export const get:
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
850
|
+
export const get: {
|
|
851
|
+
/**
|
|
852
|
+
* @since 1.0.0
|
|
853
|
+
* @category constructors
|
|
854
|
+
*/
|
|
855
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, "GET">
|
|
856
|
+
/**
|
|
857
|
+
* @since 1.0.0
|
|
858
|
+
* @category constructors
|
|
859
|
+
*/
|
|
860
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, "GET">
|
|
861
|
+
} = make("GET")
|
|
783
862
|
|
|
784
863
|
/**
|
|
785
864
|
* @since 1.0.0
|
|
786
865
|
* @category constructors
|
|
787
866
|
*/
|
|
788
|
-
export const post:
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
867
|
+
export const post: {
|
|
868
|
+
/**
|
|
869
|
+
* @since 1.0.0
|
|
870
|
+
* @category constructors
|
|
871
|
+
*/
|
|
872
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, "POST">
|
|
873
|
+
/**
|
|
874
|
+
* @since 1.0.0
|
|
875
|
+
* @category constructors
|
|
876
|
+
*/
|
|
877
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, "POST">
|
|
878
|
+
} = make("POST")
|
|
792
879
|
|
|
793
880
|
/**
|
|
794
881
|
* @since 1.0.0
|
|
795
882
|
* @category constructors
|
|
796
883
|
*/
|
|
797
|
-
export const put:
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
884
|
+
export const put: {
|
|
885
|
+
/**
|
|
886
|
+
* @since 1.0.0
|
|
887
|
+
* @category constructors
|
|
888
|
+
*/
|
|
889
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, "PUT">
|
|
890
|
+
/**
|
|
891
|
+
* @since 1.0.0
|
|
892
|
+
* @category constructors
|
|
893
|
+
*/
|
|
894
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, "PUT">
|
|
895
|
+
} = make("PUT")
|
|
801
896
|
|
|
802
897
|
/**
|
|
803
898
|
* @since 1.0.0
|
|
804
899
|
* @category constructors
|
|
805
900
|
*/
|
|
806
|
-
export const patch:
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
901
|
+
export const patch: {
|
|
902
|
+
/**
|
|
903
|
+
* @since 1.0.0
|
|
904
|
+
* @category constructors
|
|
905
|
+
*/
|
|
906
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, "PATCH">
|
|
907
|
+
/**
|
|
908
|
+
* @since 1.0.0
|
|
909
|
+
* @category constructors
|
|
910
|
+
*/
|
|
911
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, "PATCH">
|
|
912
|
+
} = make(
|
|
913
|
+
"PATCH"
|
|
914
|
+
)
|
|
810
915
|
|
|
811
916
|
/**
|
|
812
917
|
* @since 1.0.0
|
|
813
918
|
* @category constructors
|
|
814
919
|
*/
|
|
815
|
-
export const del:
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
920
|
+
export const del: {
|
|
921
|
+
/**
|
|
922
|
+
* @since 1.0.0
|
|
923
|
+
* @category constructors
|
|
924
|
+
*/
|
|
925
|
+
<const Name extends string>(name: Name): HttpApiEndpoint.Constructor<Name, "DELETE">
|
|
926
|
+
/**
|
|
927
|
+
* @since 1.0.0
|
|
928
|
+
* @category constructors
|
|
929
|
+
*/
|
|
930
|
+
<const Name extends string>(name: Name, path: HttpRouter.PathInput): HttpApiEndpoint<Name, "DELETE">
|
|
931
|
+
} = make(
|
|
932
|
+
"DELETE"
|
|
933
|
+
)
|
package/src/HttpApiSchema.ts
CHANGED
|
@@ -37,6 +37,14 @@ export const AnnotationEmptyDecodeable: unique symbol = Symbol.for(
|
|
|
37
37
|
*/
|
|
38
38
|
export const AnnotationEncoding: unique symbol = Symbol.for("@effect/platform/HttpApiSchema/AnnotationEncoding")
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category annotations
|
|
43
|
+
*/
|
|
44
|
+
export const AnnotationParam: unique symbol = Symbol.for(
|
|
45
|
+
"@effect/platform/HttpApiSchema/AnnotationParam"
|
|
46
|
+
)
|
|
47
|
+
|
|
40
48
|
const mergedAnnotations = (ast: AST.AST): Record<symbol, unknown> =>
|
|
41
49
|
ast._tag === "Transformation" ?
|
|
42
50
|
{
|
|
@@ -78,6 +86,12 @@ const encodingJson: Encoding = {
|
|
|
78
86
|
*/
|
|
79
87
|
export const getEncoding = (ast: AST.AST): Encoding => getAnnotation<Encoding>(ast, AnnotationEncoding) ?? encodingJson
|
|
80
88
|
|
|
89
|
+
/**
|
|
90
|
+
* @since 1.0.0
|
|
91
|
+
* @category annotations
|
|
92
|
+
*/
|
|
93
|
+
export const getParam = (ast: AST.AST): string | undefined => ast.annotations[AnnotationParam] as string | undefined
|
|
94
|
+
|
|
81
95
|
/**
|
|
82
96
|
* @since 1.0.0
|
|
83
97
|
* @category annotations
|
|
@@ -155,13 +169,44 @@ export const UnionUnify = <A extends Schema.Schema.All, B extends Schema.Schema.
|
|
|
155
169
|
)))
|
|
156
170
|
}
|
|
157
171
|
|
|
172
|
+
type Void$ = typeof Schema.Void
|
|
173
|
+
|
|
158
174
|
/**
|
|
159
175
|
* @since 1.0.0
|
|
160
|
-
* @category params
|
|
176
|
+
* @category path params
|
|
161
177
|
*/
|
|
162
|
-
export interface
|
|
178
|
+
export interface Param<Name extends string, S extends Schema.Schema.Any>
|
|
179
|
+
extends Schema.Schema<S["Type"], S["Encoded"], S["Context"]>
|
|
180
|
+
{
|
|
181
|
+
readonly [AnnotationParam]: Name
|
|
182
|
+
}
|
|
163
183
|
|
|
164
|
-
|
|
184
|
+
/**
|
|
185
|
+
* @since 1.0.0
|
|
186
|
+
* @category path params
|
|
187
|
+
*/
|
|
188
|
+
export const param: {
|
|
189
|
+
/**
|
|
190
|
+
* @since 1.0.0
|
|
191
|
+
* @category path params
|
|
192
|
+
*/
|
|
193
|
+
<Name extends string>(name: Name): <S extends AnyString>(schema: S) => Param<Name, S>
|
|
194
|
+
/**
|
|
195
|
+
* @since 1.0.0
|
|
196
|
+
* @category path params
|
|
197
|
+
*/
|
|
198
|
+
<Name extends string, S extends AnyString>(name: Name, schema: S): Param<Name, S>
|
|
199
|
+
} = dual(
|
|
200
|
+
2,
|
|
201
|
+
<Name extends string, S extends AnyString>(name: Name, schema: S): Param<Name, S> =>
|
|
202
|
+
schema.annotations({ [AnnotationParam]: name }) as any
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @since 1.0.0
|
|
207
|
+
* @category path params
|
|
208
|
+
*/
|
|
209
|
+
export type AnyString = Schema.Schema<any, string, never> | Schema.Schema<any, string, any>
|
|
165
210
|
|
|
166
211
|
/**
|
|
167
212
|
* @since 1.0.0
|
|
@@ -13,7 +13,7 @@ import type { ParseOptions } from "effect/SchemaAST"
|
|
|
13
13
|
import type * as Stream from "effect/Stream"
|
|
14
14
|
import * as FileSystem from "./FileSystem.js"
|
|
15
15
|
import type * as Headers from "./Headers.js"
|
|
16
|
-
import
|
|
16
|
+
import * as UrlParams from "./UrlParams.js"
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @since 1.0.0
|
|
@@ -56,13 +56,17 @@ export const schemaBodyJson = <A, I, R>(schema: Schema.Schema<A, I, R>, options?
|
|
|
56
56
|
* @since 1.0.0
|
|
57
57
|
* @category schema
|
|
58
58
|
*/
|
|
59
|
-
export const schemaBodyUrlParams = <
|
|
59
|
+
export const schemaBodyUrlParams = <
|
|
60
|
+
A,
|
|
61
|
+
I extends Readonly<Record<string, string | ReadonlyArray<string> | undefined>>,
|
|
62
|
+
R
|
|
63
|
+
>(
|
|
60
64
|
schema: Schema.Schema<A, I, R>,
|
|
61
65
|
options?: ParseOptions | undefined
|
|
62
66
|
) => {
|
|
63
|
-
const
|
|
67
|
+
const decode = UrlParams.schemaStruct(schema, options)
|
|
64
68
|
return <E>(self: HttpIncomingMessage<E>): Effect.Effect<A, E | ParseResult.ParseError, R> =>
|
|
65
|
-
Effect.flatMap(self.urlParamsBody,
|
|
69
|
+
Effect.flatMap(self.urlParamsBody, decode)
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/**
|
package/src/HttpServerRequest.ts
CHANGED
|
@@ -183,7 +183,11 @@ export const schemaBodyForm: <A, I extends Partial<Multipart.Persisted>, R>(
|
|
|
183
183
|
* @since 1.0.0
|
|
184
184
|
* @category schema
|
|
185
185
|
*/
|
|
186
|
-
export const schemaBodyUrlParams: <
|
|
186
|
+
export const schemaBodyUrlParams: <
|
|
187
|
+
A,
|
|
188
|
+
I extends Readonly<Record<string, string | ReadonlyArray<string> | undefined>>,
|
|
189
|
+
R
|
|
190
|
+
>(
|
|
187
191
|
schema: Schema.Schema<A, I, R>,
|
|
188
192
|
options?: ParseOptions | undefined
|
|
189
193
|
) => Effect.Effect<A, ParseResult.ParseError | Error.RequestError, R | HttpServerRequest> = internal.schemaBodyUrlParams
|
package/src/Multipart.ts
CHANGED
|
@@ -114,7 +114,7 @@ export const isPersistedFile: (u: unknown) => u is PersistedFile = internal.isPe
|
|
|
114
114
|
* @category models
|
|
115
115
|
*/
|
|
116
116
|
export interface Persisted {
|
|
117
|
-
readonly [key: string]: ReadonlyArray<PersistedFile> | string
|
|
117
|
+
readonly [key: string]: ReadonlyArray<PersistedFile> | ReadonlyArray<string> | string
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
/**
|
package/src/OpenApiJsonSchema.ts
CHANGED
|
@@ -85,6 +85,7 @@ export interface String extends Annotations {
|
|
|
85
85
|
minLength?: number
|
|
86
86
|
maxLength?: number
|
|
87
87
|
pattern?: string
|
|
88
|
+
format?: string
|
|
88
89
|
contentEncoding?: string
|
|
89
90
|
contentMediaType?: string
|
|
90
91
|
contentSchema?: JsonSchema
|
|
@@ -99,6 +100,7 @@ export interface Numeric extends Annotations {
|
|
|
99
100
|
exclusiveMinimum?: number
|
|
100
101
|
maximum?: number
|
|
101
102
|
exclusiveMaximum?: number
|
|
103
|
+
format?: string
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
/**
|
package/src/UrlParams.ts
CHANGED
|
@@ -236,13 +236,7 @@ export const remove: {
|
|
|
236
236
|
|
|
237
237
|
/**
|
|
238
238
|
* @since 1.0.0
|
|
239
|
-
* @category
|
|
240
|
-
*/
|
|
241
|
-
export const toString = (self: UrlParams): string => new URLSearchParams(self as any).toString()
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* @since 1.0.0
|
|
245
|
-
* @category constructors
|
|
239
|
+
* @category conversions
|
|
246
240
|
*/
|
|
247
241
|
export const makeUrl = (url: string, params: UrlParams, hash: Option.Option<string>): Either.Either<URL, Error> => {
|
|
248
242
|
try {
|
|
@@ -262,6 +256,12 @@ export const makeUrl = (url: string, params: UrlParams, hash: Option.Option<stri
|
|
|
262
256
|
}
|
|
263
257
|
}
|
|
264
258
|
|
|
259
|
+
/**
|
|
260
|
+
* @since 1.0.0
|
|
261
|
+
* @category conversions
|
|
262
|
+
*/
|
|
263
|
+
export const toString = (self: UrlParams): string => new URLSearchParams(self as any).toString()
|
|
264
|
+
|
|
265
265
|
const baseUrl = (): string | undefined => {
|
|
266
266
|
if (
|
|
267
267
|
"location" in globalThis &&
|
|
@@ -327,3 +327,35 @@ export const schemaJson = <A, I, R>(schema: Schema.Schema<A, I, R>, options?: Pa
|
|
|
327
327
|
(self: UrlParams, field: string) => Effect.Effect<A, ParseResult.ParseError, R>
|
|
328
328
|
>(2, (self, field) => parse(Option.getOrElse(getLast(self, field), () => "")))
|
|
329
329
|
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Extract schema from all key-value pairs in the given `UrlParams`.
|
|
333
|
+
*
|
|
334
|
+
* @example
|
|
335
|
+
* import { Effect, Schema } from "effect"
|
|
336
|
+
* import { UrlParams } from "@effect/platform"
|
|
337
|
+
*
|
|
338
|
+
* Effect.gen(function* () {
|
|
339
|
+
* const urlParams = UrlParams.fromInput({ "a": [10, "string"], "b": false })
|
|
340
|
+
* const result = yield* UrlParams.schemaStruct(Schema.Struct({
|
|
341
|
+
* a: Schema.Tuple(Schema.NumberFromString, Schema.String),
|
|
342
|
+
* b: Schema.BooleanFromString
|
|
343
|
+
* }))(urlParams)
|
|
344
|
+
*
|
|
345
|
+
* assert.deepStrictEqual(result, {
|
|
346
|
+
* a: [10, "string"],
|
|
347
|
+
* b: false
|
|
348
|
+
* })
|
|
349
|
+
* })
|
|
350
|
+
*
|
|
351
|
+
* @since 1.0.0
|
|
352
|
+
* @category schema
|
|
353
|
+
*/
|
|
354
|
+
export const schemaStruct = <A, I extends Record<string, string | ReadonlyArray<string> | undefined>, R>(
|
|
355
|
+
schema: Schema.Schema<A, I, R>,
|
|
356
|
+
options?: ParseOptions | undefined
|
|
357
|
+
) =>
|
|
358
|
+
(self: UrlParams): Effect.Effect<A, ParseResult.ParseError, R> => {
|
|
359
|
+
const parse = Schema.decodeUnknown(schema, options)
|
|
360
|
+
return parse(toRecord(self))
|
|
361
|
+
}
|
|
@@ -122,7 +122,11 @@ export const schemaBodyForm = <A, I extends Partial<Multipart.Persisted>, R>(
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/** @internal */
|
|
125
|
-
export const schemaBodyUrlParams = <
|
|
125
|
+
export const schemaBodyUrlParams = <
|
|
126
|
+
A,
|
|
127
|
+
I extends Readonly<Record<string, string | ReadonlyArray<string> | undefined>>,
|
|
128
|
+
R
|
|
129
|
+
>(
|
|
126
130
|
schema: Schema.Schema<A, I, R>,
|
|
127
131
|
options?: ParseOptions | undefined
|
|
128
132
|
) => {
|
|
@@ -397,30 +397,36 @@ export const toPersisted = (
|
|
|
397
397
|
const fs = yield* FileSystem.FileSystem
|
|
398
398
|
const path_ = yield* Path.Path
|
|
399
399
|
const dir = yield* fs.makeTempDirectoryScoped()
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if (part._tag === "Field") {
|
|
400
|
+
const persisted: Record<string, Array<Multipart.PersistedFile> | Array<string> | string> = Object.create(null)
|
|
401
|
+
yield* Stream.runForEach(stream, (part) => {
|
|
402
|
+
if (part._tag === "Field") {
|
|
403
|
+
if (!(part.key in persisted)) {
|
|
405
404
|
persisted[part.key] = part.value
|
|
406
|
-
|
|
405
|
+
} else if (typeof persisted[part.key] === "string") {
|
|
406
|
+
persisted[part.key] = [persisted[part.key] as string, part.value]
|
|
407
|
+
} else {
|
|
408
|
+
;(persisted[part.key] as Array<string>).push(part.value)
|
|
407
409
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
persisted[part.key] = []
|
|
412
|
-
}
|
|
413
|
-
;(persisted[part.key] as Array<Multipart.PersistedFile>).push(
|
|
414
|
-
new PersistedFileImpl(
|
|
415
|
-
file.key,
|
|
416
|
-
file.name,
|
|
417
|
-
file.contentType,
|
|
418
|
-
path
|
|
419
|
-
)
|
|
420
|
-
)
|
|
421
|
-
return Effect.as(writeFile(path, file), persisted)
|
|
410
|
+
return Effect.void
|
|
411
|
+
} else if (part.name === "") {
|
|
412
|
+
return Effect.void
|
|
422
413
|
}
|
|
423
|
-
|
|
414
|
+
const file = part
|
|
415
|
+
const path = path_.join(dir, path_.basename(file.name).slice(-128))
|
|
416
|
+
const filePart = new PersistedFileImpl(
|
|
417
|
+
file.key,
|
|
418
|
+
file.name,
|
|
419
|
+
file.contentType,
|
|
420
|
+
path
|
|
421
|
+
)
|
|
422
|
+
if (Array.isArray(persisted[part.key])) {
|
|
423
|
+
;(persisted[part.key] as Array<Multipart.PersistedFile>).push(filePart)
|
|
424
|
+
} else {
|
|
425
|
+
persisted[part.key] = [filePart]
|
|
426
|
+
}
|
|
427
|
+
return writeFile(path, file)
|
|
428
|
+
})
|
|
429
|
+
return persisted
|
|
424
430
|
}).pipe(
|
|
425
431
|
Effect.catchTags({
|
|
426
432
|
SystemError: (cause) => Effect.fail(new MultipartError({ reason: "InternalError", cause })),
|