Skip to content

Commit

Permalink
Schema: next minor (#2440)
Browse files Browse the repository at this point in the history
  • Loading branch information
gcanti committed Apr 9, 2024
1 parent 9881f26 commit b3acf47
Show file tree
Hide file tree
Showing 33 changed files with 801 additions and 676 deletions.
34 changes: 34 additions & 0 deletions .changeset/old-rats-remember.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
"@effect/schema": minor
---

AST

- rename `isTransform` to `isTransformation`

Schema

- consolidate `transform` and `transformOrFail` parameters into an `options` object, #2434
- consolidate `Class.transformOrFail` and `Class.transformOrFailFrom` parameters into an `options` object
- consolidate `declare` parameters into an `options` object
- consolidate `optionalToRequired` parameters into an `options` object
- consolidate `optionalToOptional` parameters into an `options` object
- Removed `negateBigDecimal` function (This cleanup was prompted by the realization that numerous functions can be derived from transformations such as negation, Math.abs, increment, etc. However, including all of them in the library is not feasible. Therefore, `negateBigDecimal` was removed)

ParseResult

- rename `Tuple` to `TupleType`

TreeFormatter

- rename `formatIssue` to `formatIssueSync` (This change was made to maintain consistency in API naming across all decoding and encoding APIs.)
- rename `formatIssueEffect` to `formatIssue`
- rename `formatError` to `formatErrorSync`
- rename `formatErrorEffect` to `formatError`

ArrayFormatter

- rename `formatIssue` to `formatIssueSync`
- rename `formatIssueEffect` to `formatIssue`
- rename `formatError` to `formatErrorSync`
- rename `formatErrorEffect` to `formatError`
2 changes: 1 addition & 1 deletion packages/cli/src/internal/args.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ export const withSchema = dual<
return mapEffect(self, (_) =>
Effect.mapError(
decode(_ as any),
(error) => InternalHelpDoc.p(TreeFormatter.formatIssue(error.error))
(error) => InternalHelpDoc.p(TreeFormatter.formatIssueSync(error.error))
))
})

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/internal/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,7 @@ export const withSchema = dual<
return mapEffect(self, (_) =>
Effect.mapError(
decode(_ as any),
(error) => InternalValidationError.invalidValue(InternalHelpDoc.p(TreeFormatter.formatIssue(error.error)))
(error) => InternalValidationError.invalidValue(InternalHelpDoc.p(TreeFormatter.formatIssueSync(error.error)))
))
})

Expand Down
3 changes: 1 addition & 2 deletions packages/experimental/src/DevTools/Domain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,7 @@ export const Gauge = metric(
const numberOrInfinity = Schema.transform(
Schema.union(Schema.number, Schema.null),
Schema.number,
(i) => i === null ? Number.POSITIVE_INFINITY : i,
(i) => Number.isFinite(i) ? i : null
{ decode: (i) => i === null ? Number.POSITIVE_INFINITY : i, encode: (i) => Number.isFinite(i) ? i : null }
)

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/experimental/src/Persistence.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export class PersistenceParseError extends TypeIdError(ErrorTypeId, "Persistence
}

get message() {
return TreeFormatter.formatIssue(this.error)
return TreeFormatter.formatIssueSync(this.error)
}
}

Expand Down
3 changes: 1 addition & 2 deletions packages/platform/src/Http/Headers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ export const schema: Schema.Schema<Headers, ReadonlyRecord.ReadonlyRecord<string
Schema.transform(
Schema.record(Schema.string, Schema.union(Schema.string, Schema.array(Schema.string))),
schemaFromSelf,
(record) => fromInput(record),
identity
{ decode: (record) => fromInput(record), encode: identity }
)

/**
Expand Down
3 changes: 1 addition & 2 deletions packages/platform/src/Transferable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ export const schema: {
Schema.transformOrFail(
Schema.encodedSchema(self),
self,
ParseResult.succeed,
(i) => Effect.as(addAll(f(i)), i)
{ decode: ParseResult.succeed, encode: (i) => Effect.as(addAll(f(i)), i) }
))

/**
Expand Down
12 changes: 7 additions & 5 deletions packages/platform/src/WorkerError.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ export const isWorkerError = (u: unknown): u is WorkerError => Predicate.hasProp
const causeDefectPretty: Schema.Schema<unknown> = Schema.transform(
Schema.unknown,
Schema.unknown,
identity,
(defect) => {
if (Predicate.isObject(defect)) {
return Cause.pretty(Cause.die(defect))
{
decode: identity,
encode: (defect) => {
if (Predicate.isObject(defect)) {
return Cause.pretty(Cause.die(defect))
}
return String(defect)
}
return String(defect)
}
)

Expand Down
9 changes: 3 additions & 6 deletions packages/rpc/src/Router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,7 @@ export const toHandler = <R extends Router<any, any>>(router: R, options?: {
Schema.transform(
rpc.schema,
Schema.typeSchema(Schema.tuple(rpc.schema, Schema.any)),
(request) => [request, rpc] as const,
([request]) => request
{ decode: (request) => [request, rpc] as const, encode: ([request]) => request }
)
)
)
Expand Down Expand Up @@ -302,8 +301,7 @@ export const toHandlerEffect = <R extends Router<any, any>>(router: R, options?:
Schema.transform(
rpc.schema,
Schema.typeSchema(Schema.tuple(rpc.schema, Schema.any)),
(request) => [request, rpc] as const,
([request]) => request
{ decode: (request) => [request, rpc] as const, encode: ([request]) => request }
)
)
)
Expand Down Expand Up @@ -370,8 +368,7 @@ export const toHandlerRaw = <R extends Router<any, any>>(router: R) => {
Schema.transform(
Schema.typeSchema(rpc.schema),
Schema.typeSchema(Schema.tuple(rpc.schema, Schema.any)),
(request) => [request, rpc] as const,
([request]) => request
{ decode: (request) => [request, rpc] as const, encode: ([request]) => request }
)
))
const parse = Schema.decode(schema)
Expand Down

0 comments on commit b3acf47

Please sign in to comment.