import qs from "qs";
import * as Schema from "@effect/schema/Schema";
const ParsedQs: Schema.Schema<qs.ParsedQs> = Schema.lazy(() =>
Schema.record(
Schema.string,
Schema.union(
Schema.undefined,
Schema.string,
Schema.array(Schema.string),
ParsedQs,
Schema.array(ParsedQs)
)
)
);
const parsedQsFromString = Schema.transform(
Schema.string,
ParsedQs,
(input) => qs.parse(input),
(output) => qs.stringify(output)
);
export const fromQueryStringParameters = <A>(schema: Schema.Schema<any, A>) =>
Schema.struct({
rawQueryString: Schema.compose(parsedQsFromString, schema),
});
import qs from "qs";
import * as Schema from "@effect/schema/Schema";
const ParsedQs: Schema.Schema<qs.ParsedQs> = Schema.lazy(() =>
Schema.record(
Schema.string,
Schema.union(
Schema.undefined,
Schema.string,
Schema.array(Schema.string),
ParsedQs,
Schema.array(ParsedQs)
)
)
);
const parsedQsFromString = Schema.transform(
Schema.string,
ParsedQs,
(input) => qs.parse(input),
(output) => qs.stringify(output)
);
export const fromQueryStringParameters = <A>(schema: Schema.Schema<any, A>) =>
Schema.struct({
rawQueryString: Schema.compose(parsedQsFromString, schema),
});