effect-app 4.0.0-beta.51 → 4.0.0-beta.52

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 4.0.0-beta.52
4
+
5
+ ### Minor Changes
6
+
7
+ - 6252808: Add `ReadonlySetFromArray` and `ReadonlyMapFromArray` schema transformations that decode from annotated arrays to Set/Map. Update `ReadonlySet` and `ReadonlyMap` to use these internally.
8
+
3
9
  ## 4.0.0-beta.51
4
10
 
5
11
  ## 4.0.0-beta.50
@@ -96,9 +96,9 @@ declare const Operation_base: S.EnhancedClass<Operation, S.Struct<{
96
96
  } & {
97
97
  readonly tags: S.Literals<["OperationSuccess", "OperationFailure"]>;
98
98
  }>;
99
- createdAt: S.withConstructorDefault<S.decodeTo<import("effect/Schema").Date, S.String, never, never> & S.WithoutConstructorDefault>;
100
- updatedAt: S.withConstructorDefault<import("effect/Schema").NullOr<S.decodeTo<import("effect/Schema").Date, S.String, never, never> & {
101
- withDefault: S.withConstructorDefault<S.decodeTo<import("effect/Schema").Date, S.String, never, never> & S.WithoutConstructorDefault>;
99
+ createdAt: S.withConstructorDefault<S.DateFromString & S.WithoutConstructorDefault>;
100
+ updatedAt: S.withConstructorDefault<import("effect/Schema").NullOr<S.DateFromString & {
101
+ withDefault: S.withConstructorDefault<S.DateFromString & S.WithoutConstructorDefault>;
102
102
  }> & S.WithoutConstructorDefault>;
103
103
  }>, {}>;
104
104
  export declare class Operation extends Operation_base {
@@ -1,100 +1,216 @@
1
- import { Effect, Schema, type SchemaAST, SchemaIssue, ServiceMap } from "effect";
1
+ import { Effect, type SchemaAST, SchemaIssue, SchemaTransformation, ServiceMap } from "effect";
2
2
  import * as S from "effect/Schema";
3
3
  import { type NonEmptyReadonlyArray } from "../Array.js";
4
4
  import { type AST } from "./schema.js";
5
5
  type ProvidedCodec<Self extends S.Top, R> = S.Codec<Self["Type"], Self["Encoded"], Exclude<Self["DecodingServices"], R>, Exclude<Self["EncodingServices"], R>>;
6
6
  export declare const withDefaultConstructor: <A>(makeDefault: () => NoInfer<A>) => <Self extends S.Top>(self: Self) => S.withConstructorDefault<Self & S.WithoutConstructorDefault>;
7
+ /**
8
+ * Formats a `Date` as an ISO 8601 string, returning `"Invalid Date"` for
9
+ * invalid dates instead of throwing.
10
+ *
11
+ * When to use:
12
+ * - You want a safe `toISOString()` that never throws.
13
+ *
14
+ * Behavior:
15
+ * - Returns `date.toISOString()` on success.
16
+ * - Returns `"Invalid Date"` if `toISOString()` throws (e.g. for
17
+ * `new Date(NaN)`).
18
+ * - Pure function; does not mutate input.
19
+ *
20
+ * **Example** (Safe date formatting)
21
+ *
22
+ * ```ts
23
+ * import { Formatter } from "effect"
24
+ *
25
+ * console.log(Formatter.formatDate(new Date("2024-01-15T10:30:00Z")))
26
+ * // 2024-01-15T10:30:00.000Z
27
+ *
28
+ * console.log(Formatter.formatDate(new Date("invalid")))
29
+ * // Invalid Date
30
+ * ```
31
+ *
32
+ * See also: {@link format}
33
+ *
34
+ * @internal
35
+ */
36
+ export declare function formatDate(date: Date): string;
37
+ /**
38
+ * Decodes a `string` into a `Date` and encodes a `Date` back to a `string`.
39
+ *
40
+ * When to use this:
41
+ * - Parsing ISO 8601 date strings from APIs or user input.
42
+ *
43
+ * Behavior:
44
+ * - Decode: creates a `Date` from the string (like `new Date(s)`).
45
+ * - Encode: converts the `Date` to an ISO string (like `date.toISOString()`),
46
+ * returning `"Invalid Date"` for invalid dates.
47
+ *
48
+ * **Example** (Date from string)
49
+ *
50
+ * ```ts
51
+ * import { Schema, SchemaTransformation } from "effect"
52
+ *
53
+ * const schema = Schema.String.pipe(
54
+ * Schema.decodeTo(Schema.Date, SchemaTransformation.dateFromString)
55
+ * )
56
+ * ```
57
+ *
58
+ * See also:
59
+ * - {@link numberFromString}
60
+ * - {@link dateTimeUtcFromString}
61
+ *
62
+ * @category Coercions
63
+ * @since 4.0.0
64
+ */
65
+ export declare const dateFromString: SchemaTransformation.Transformation<globalThis.Date, string>;
66
+ /**
67
+ * Schema type for {@link DateFromString}.
68
+ *
69
+ * @category Schemas
70
+ * @since 4.0.0
71
+ */
72
+ export interface DateFromString extends S.decodeTo<S.Date, S.String> {
73
+ }
74
+ /**
75
+ * A transformation schema that parses an ISO 8601 string into a `Date`.
76
+ *
77
+ * Decoding:
78
+ * - A `string` is decoded as a `Date`.
79
+ *
80
+ * Encoding:
81
+ * - A `Date` is encoded as a `string`.
82
+ *
83
+ * @since 4.0.0
84
+ */
85
+ export declare const DateFromString: DateFromString;
7
86
  /**
8
87
  * Like the default Schema `Date` but from String with `withDefault` => now
9
88
  */
10
- export declare const Date: Schema.decodeTo<Schema.Date, Schema.String, never, never> & {
11
- withDefault: Schema.withConstructorDefault<Schema.decodeTo<Schema.Date, Schema.String, never, never> & Schema.WithoutConstructorDefault>;
89
+ export declare const Date: DateFromString & {
90
+ withDefault: S.withConstructorDefault<DateFromString & S.WithoutConstructorDefault>;
12
91
  };
13
92
  /**
14
93
  * Like the default Schema `DateValid` but from String with `withDefault` => now
15
94
  */
16
- export declare const DateValid: Schema.decodeTo<Schema.Date, Schema.String, never, never> & {
17
- withDefault: Schema.withConstructorDefault<Schema.decodeTo<Schema.Date, Schema.String, never, never> & Schema.WithoutConstructorDefault>;
95
+ export declare const DateValid: DateFromString & {
96
+ withDefault: S.withConstructorDefault<DateFromString & S.WithoutConstructorDefault>;
18
97
  } & {
19
- withDefault: Schema.withConstructorDefault<Schema.decodeTo<Schema.Date, Schema.String, never, never> & Schema.WithoutConstructorDefault>;
98
+ withDefault: S.withConstructorDefault<DateFromString & S.WithoutConstructorDefault>;
20
99
  };
21
100
  /**
22
101
  * Like the default Schema `Boolean` but with `withDefault` => false
23
102
  */
24
- export declare const Boolean: Schema.Boolean & {
25
- withDefault: Schema.withConstructorDefault<Schema.Boolean & Schema.WithoutConstructorDefault>;
103
+ export declare const Boolean: S.Boolean & {
104
+ withDefault: S.withConstructorDefault<S.Boolean & S.WithoutConstructorDefault>;
26
105
  };
27
106
  /**
28
107
  * You probably want to use `Finite` instead of this.
29
108
  * Like the default Schema `Number` but with `withDefault` => 0
30
109
  */
31
- export declare const Number: Schema.Number & {
32
- withDefault: Schema.withConstructorDefault<Schema.Number & Schema.WithoutConstructorDefault>;
110
+ export declare const Number: S.Number & {
111
+ withDefault: S.withConstructorDefault<S.Number & S.WithoutConstructorDefault>;
33
112
  };
34
113
  /**
35
114
  * Like the default Schema `Finite` but with `withDefault` => 0
36
115
  */
37
- export declare const Finite: Schema.Finite & {
38
- withDefault: Schema.withConstructorDefault<Schema.Finite & Schema.WithoutConstructorDefault>;
116
+ export declare const Finite: S.Finite & {
117
+ withDefault: S.withConstructorDefault<S.Finite & S.WithoutConstructorDefault>;
39
118
  };
40
119
  /**
41
120
  * Like the default Schema `Literal` but with `withDefault` => literals[0]
42
121
  */
43
- export declare const Literal: <Literals extends NonEmptyReadonlyArray<AST.LiteralValue>>(...literals: Literals) => Schema.Literals<Literals> & {
44
- changeDefault: <A extends Literals[number]>(a: A) => Schema.Literals<Literals> & {
122
+ export declare const Literal: <Literals extends NonEmptyReadonlyArray<AST.LiteralValue>>(...literals: Literals) => S.Literals<Literals> & {
123
+ changeDefault: <A extends Literals[number]>(a: A) => S.Literals<Literals> & {
45
124
  Default: A;
46
- withDefault: Schema.withConstructorDefault<Schema.Literals<Literals> & Schema.WithoutConstructorDefault>;
125
+ withDefault: S.withConstructorDefault<S.Literals<Literals> & S.WithoutConstructorDefault>;
47
126
  };
48
127
  Default: (typeof literals)[0];
49
- withDefault: Schema.withConstructorDefault<Schema.Literals<Literals> & Schema.WithoutConstructorDefault>;
128
+ withDefault: S.withConstructorDefault<S.Literals<Literals> & S.WithoutConstructorDefault>;
50
129
  };
51
130
  /**
52
131
  * Like the default Schema `Array` but with `withDefault` => []
53
132
  */
54
- export declare function Array<ValueSchema extends S.Top>(value: ValueSchema): Schema.$Array<ValueSchema> & {
55
- withDefault: Schema.withConstructorDefault<Schema.$Array<ValueSchema> & Schema.WithoutConstructorDefault>;
133
+ export declare function Array<ValueSchema extends S.Top>(value: ValueSchema): S.$Array<ValueSchema> & {
134
+ withDefault: S.withConstructorDefault<S.$Array<ValueSchema> & S.WithoutConstructorDefault>;
56
135
  };
57
136
  /**
58
- * Like the default Schema `Map` but with `withDefault` => []
137
+ * An annotated `S.Array` of unique items that decodes to a `ReadonlySet`.
59
138
  */
60
- declare function Map_<KeySchema extends S.Top, ValueSchema extends S.Top>(input: {
61
- key: KeySchema;
62
- value: ValueSchema;
63
- }): Schema.$ReadonlyMap<KeySchema, ValueSchema> & {
64
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlyMap<KeySchema, ValueSchema> & Schema.WithoutConstructorDefault>;
65
- };
66
- export { Map_ as Map };
139
+ export declare const ReadonlySetFromArray: <ValueSchema extends S.Top>(value: ValueSchema) => S.Codec<ReadonlySet<S.Schema.Type<ValueSchema>>, readonly ValueSchema["Encoded"][], ValueSchema["DecodingServices"], ValueSchema["EncodingServices"]>;
140
+ /**
141
+ * An annotated `S.Array` of key-value tuples that decodes to a `ReadonlyMap`.
142
+ */
143
+ export declare const ReadonlyMapFromArray: <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
144
+ readonly key: KeySchema;
145
+ readonly value: ValueSchema;
146
+ }) => S.Codec<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, readonly (KeySchema extends {
147
+ readonly Encoded: infer T;
148
+ } ? KeySchema extends {
149
+ readonly "~encoded.optionality": "optional";
150
+ } ? ValueSchema extends {
151
+ readonly Encoded: infer T;
152
+ } ? ValueSchema extends {
153
+ readonly "~encoded.optionality": "optional";
154
+ } ? readonly [T?, T?] : readonly [T | undefined, T] : readonly [T?] : ValueSchema extends {
155
+ readonly Encoded: infer T;
156
+ } ? ValueSchema extends {
157
+ readonly "~encoded.optionality": "optional";
158
+ } ? readonly [T, T?] : readonly [T, T] : readonly [T] : readonly [])[], S.Tuple.DecodingServices<readonly [KeySchema, ValueSchema]>, S.Tuple.EncodingServices<readonly [KeySchema, ValueSchema]>>;
67
159
  /**
68
- * Like the default Schema `ReadonlySet` but with `withDefault` => new Set()
160
+ * Like the default Schema `ReadonlySet` but from Array with `withDefault` => new Set()
69
161
  */
70
- export declare const ReadonlySet: <ValueSchema extends S.Top>(value: ValueSchema) => Schema.$ReadonlySet<ValueSchema> & {
71
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlySet<ValueSchema> & Schema.WithoutConstructorDefault>;
162
+ export declare const ReadonlySet: <ValueSchema extends S.Top>(value: ValueSchema) => S.Codec<ReadonlySet<S.Schema.Type<ValueSchema>>, readonly ValueSchema["Encoded"][], ValueSchema["DecodingServices"], ValueSchema["EncodingServices"]> & {
163
+ withDefault: S.withConstructorDefault<S.Codec<ReadonlySet<S.Schema.Type<ValueSchema>>, readonly ValueSchema["Encoded"][], ValueSchema["DecodingServices"], ValueSchema["EncodingServices"]> & S.WithoutConstructorDefault>;
72
164
  };
73
165
  /**
74
- * Like the default Schema `ReadonlyMap` but with `withDefault` => new Map()
166
+ * Like the default Schema `ReadonlyMap` but from Array with `withDefault` => new Map()
75
167
  */
76
168
  export declare const ReadonlyMap: <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
77
169
  readonly key: KeySchema;
78
170
  readonly value: ValueSchema;
79
- }) => Schema.$ReadonlyMap<KeySchema, ValueSchema> & {
80
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlyMap<KeySchema, ValueSchema> & Schema.WithoutConstructorDefault>;
171
+ }) => S.Codec<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, readonly (KeySchema extends {
172
+ readonly Encoded: infer T;
173
+ } ? KeySchema extends {
174
+ readonly "~encoded.optionality": "optional";
175
+ } ? ValueSchema extends {
176
+ readonly Encoded: infer T;
177
+ } ? ValueSchema extends {
178
+ readonly "~encoded.optionality": "optional";
179
+ } ? readonly [T?, T?] : readonly [T | undefined, T] : readonly [T?] : ValueSchema extends {
180
+ readonly Encoded: infer T;
181
+ } ? ValueSchema extends {
182
+ readonly "~encoded.optionality": "optional";
183
+ } ? readonly [T, T?] : readonly [T, T] : readonly [T] : readonly [])[], S.Tuple.DecodingServices<readonly [KeySchema, ValueSchema]>, S.Tuple.EncodingServices<readonly [KeySchema, ValueSchema]>> & {
184
+ withDefault: S.withConstructorDefault<S.Codec<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, readonly (KeySchema extends {
185
+ readonly Encoded: infer T;
186
+ } ? KeySchema extends {
187
+ readonly "~encoded.optionality": "optional";
188
+ } ? ValueSchema extends {
189
+ readonly Encoded: infer T;
190
+ } ? ValueSchema extends {
191
+ readonly "~encoded.optionality": "optional";
192
+ } ? readonly [T?, T?] : readonly [T | undefined, T] : readonly [T?] : ValueSchema extends {
193
+ readonly Encoded: infer T;
194
+ } ? ValueSchema extends {
195
+ readonly "~encoded.optionality": "optional";
196
+ } ? readonly [T, T?] : readonly [T, T] : readonly [T] : readonly [])[], S.Tuple.DecodingServices<readonly [KeySchema, ValueSchema]>, S.Tuple.EncodingServices<readonly [KeySchema, ValueSchema]>> & S.WithoutConstructorDefault>;
81
197
  };
82
198
  /**
83
199
  * Like the default Schema `NullOr` but with `withDefault` => null
84
200
  */
85
- export declare const NullOr: <Schema extends S.Top>(self: Schema) => Schema.NullOr<Schema> & {
86
- withDefault: Schema.withConstructorDefault<Schema.NullOr<Schema> & Schema.WithoutConstructorDefault>;
201
+ export declare const NullOr: <Schema extends S.Top>(self: Schema) => S.NullOr<Schema> & {
202
+ withDefault: S.withConstructorDefault<S.NullOr<Schema> & S.WithoutConstructorDefault>;
87
203
  };
88
- export declare const defaultDate: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
89
- export declare const defaultBool: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
90
- export declare const defaultNullable: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
91
- export declare const defaultArray: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
92
- export declare const defaultMap: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
93
- export declare const defaultSet: <Schema extends S.Top>(schema: Schema) => Schema.withConstructorDefault<Schema & Schema.WithoutConstructorDefault>;
204
+ export declare const defaultDate: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
205
+ export declare const defaultBool: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
206
+ export declare const defaultNullable: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
207
+ export declare const defaultArray: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
208
+ export declare const defaultMap: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
209
+ export declare const defaultSet: <Schema extends S.Top>(schema: Schema) => S.withConstructorDefault<Schema & S.WithoutConstructorDefault>;
94
210
  export declare const withDefaultMake: <Self extends S.Top>(s: Self) => WithDefaults<Self> & Self;
95
211
  export type WithDefaults<Self extends S.Top> = (i: Self["Encoded"], options?: SchemaAST.ParseOptions) => Self["Type"];
96
- export declare const inputDate: Schema.Codec<Date, string | Date, never, never> & {
97
- withDefault: Schema.withConstructorDefault<Schema.Codec<Date, string | Date, never, never> & Schema.WithoutConstructorDefault>;
212
+ export declare const inputDate: S.Codec<Date, string | Date, never, never> & {
213
+ withDefault: S.withConstructorDefault<S.Codec<Date, string | Date, never, never> & S.WithoutConstructorDefault>;
98
214
  };
99
215
  export interface UnionBrand {
100
216
  }
@@ -105,9 +221,10 @@ export declare function makeExactOptional<NER extends S.Struct.Fields>(t: NER):
105
221
  [K in keyof NER]: NER[K] extends S.Top ? ReturnType<typeof S.optionalKey<NER[K] & S.Top>> : any;
106
222
  };
107
223
  /** A version of transform which is only a one way mapping of From->To */
108
- export declare const transformTo: <To extends S.Top, From extends S.Top>(from: From, to: To, decode: (fromA: From["Type"], options: SchemaAST.ParseOptions) => To["Encoded"]) => Schema.decodeTo<To, From, never, never>;
224
+ export declare const transformTo: <To extends S.Top, From extends S.Top>(from: From, to: To, decode: (fromA: From["Type"], options: SchemaAST.ParseOptions) => To["Encoded"]) => S.decodeTo<To, From, never, never>;
109
225
  /** A version of transformOrFail which is only a one way mapping of From->To */
110
- export declare const transformToOrFail: <To extends S.Top, From extends S.Top, RD>(from: From, to: To, decode: (fromA: From["Type"], options: SchemaAST.ParseOptions) => Effect.Effect<To["Encoded"], SchemaIssue.Issue, RD>) => Schema.decodeTo<To, From, never, never>;
226
+ export declare const transformToOrFail: <To extends S.Top, From extends S.Top, RD>(from: From, to: To, decode: (fromA: From["Type"], options: SchemaAST.ParseOptions) => Effect.Effect<To["Encoded"], SchemaIssue.Issue, RD>) => S.decodeTo<To, From, RD, never>;
111
227
  export declare const provide: <Self extends S.Top, R>(self: Self, context: ServiceMap.ServiceMap<R>) => ProvidedCodec<Self, R>;
112
228
  export declare const contextFromServices: <Self extends S.Top, Tags extends ReadonlyArray<ServiceMap.Key<any, any>>>(self: Self, ...services: Tags) => Effect.Effect<ProvidedCodec<Self, ServiceMap.Service.Identifier<Tags[number]>>, never, ServiceMap.Service.Identifier<Tags[number]>>;
229
+ export {};
113
230
  //# sourceMappingURL=ext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../src/Schema/ext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../src/Schema/ext.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-return */
3
- import { Effect, Option, pipe, Schema, SchemaGetter, SchemaIssue, SchemaTransformation, ServiceMap } from "effect";
3
+ import { Effect, Option, pipe, SchemaGetter, SchemaIssue, SchemaTransformation, ServiceMap } from "effect";
4
4
  import * as S from "effect/Schema";
5
5
  import { isDateValid } from "effect/Schema";
6
6
  import { extendM, typedKeysOf } from "../utils.js";
@@ -12,10 +12,93 @@ export const withDefaultConstructor = (makeDefault) => (self) => {
12
12
  return S.withConstructorDefault(() => Option.some(makeDefault()))(self);
13
13
  };
14
14
  // TODO: v4 migration - Date is no longer by default encoded to string.
15
- const DateFromString = Schema.Date.pipe(Schema.encodeTo(Schema.String, {
16
- decode: SchemaGetter.Date(),
17
- encode: SchemaGetter.transform((_) => _.toISOString())
18
- }));
15
+ /*
16
+ in v4, there's the notion of `toCodecJson`, as a declaration and as a schema transformer.
17
+ this means that Date, Map/Set, etc, remain the same type Encoded as Decoded, but when transformed to and from JSON, will go through
18
+ the toCodecJson transformation, which for e.g Date will be the dateFromString transformation.
19
+
20
+ While this is a cool feature, our stack (especially the Store/Repository api) is based on having an Encoded shape representing the JSON shape, so we revert back to that for now.
21
+ */
22
+ /**
23
+ * Formats a `Date` as an ISO 8601 string, returning `"Invalid Date"` for
24
+ * invalid dates instead of throwing.
25
+ *
26
+ * When to use:
27
+ * - You want a safe `toISOString()` that never throws.
28
+ *
29
+ * Behavior:
30
+ * - Returns `date.toISOString()` on success.
31
+ * - Returns `"Invalid Date"` if `toISOString()` throws (e.g. for
32
+ * `new Date(NaN)`).
33
+ * - Pure function; does not mutate input.
34
+ *
35
+ * **Example** (Safe date formatting)
36
+ *
37
+ * ```ts
38
+ * import { Formatter } from "effect"
39
+ *
40
+ * console.log(Formatter.formatDate(new Date("2024-01-15T10:30:00Z")))
41
+ * // 2024-01-15T10:30:00.000Z
42
+ *
43
+ * console.log(Formatter.formatDate(new Date("invalid")))
44
+ * // Invalid Date
45
+ * ```
46
+ *
47
+ * See also: {@link format}
48
+ *
49
+ * @internal
50
+ */
51
+ export function formatDate(date) {
52
+ try {
53
+ return date.toISOString();
54
+ }
55
+ catch {
56
+ return "Invalid Date";
57
+ }
58
+ }
59
+ /**
60
+ * Decodes a `string` into a `Date` and encodes a `Date` back to a `string`.
61
+ *
62
+ * When to use this:
63
+ * - Parsing ISO 8601 date strings from APIs or user input.
64
+ *
65
+ * Behavior:
66
+ * - Decode: creates a `Date` from the string (like `new Date(s)`).
67
+ * - Encode: converts the `Date` to an ISO string (like `date.toISOString()`),
68
+ * returning `"Invalid Date"` for invalid dates.
69
+ *
70
+ * **Example** (Date from string)
71
+ *
72
+ * ```ts
73
+ * import { Schema, SchemaTransformation } from "effect"
74
+ *
75
+ * const schema = Schema.String.pipe(
76
+ * Schema.decodeTo(Schema.Date, SchemaTransformation.dateFromString)
77
+ * )
78
+ * ```
79
+ *
80
+ * See also:
81
+ * - {@link numberFromString}
82
+ * - {@link dateTimeUtcFromString}
83
+ *
84
+ * @category Coercions
85
+ * @since 4.0.0
86
+ */
87
+ export const dateFromString = new SchemaTransformation
88
+ .Transformation(SchemaGetter.Date(), SchemaGetter.transform(formatDate));
89
+ const DateString = S.String.annotate({ expected: "a string in ISO 8601 format that will be decoded as a Date" });
90
+ /**
91
+ * A transformation schema that parses an ISO 8601 string into a `Date`.
92
+ *
93
+ * Decoding:
94
+ * - A `string` is decoded as a `Date`.
95
+ *
96
+ * Encoding:
97
+ * - A `Date` is encoded as a `string`.
98
+ *
99
+ * @since 4.0.0
100
+ */
101
+ export const DateFromString = DateString.pipe(S.decodeTo(S.Date, dateFromString));
19
102
  /**
20
103
  * Like the default Schema `Date` but from String with `withDefault` => now
21
104
  */
@@ -63,20 +146,41 @@ export function Array(value) {
63
146
  return pipe(S.Array(value), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => [])) }));
64
147
  }
65
148
  /**
66
- * Like the default Schema `Map` but with `withDefault` => []
149
+ * An annotated `S.Array` of unique items that decodes to a `ReadonlySet`.
67
150
  */
68
- function Map_(input) {
69
- return pipe(S.ReadonlyMap(input.key, input.value), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new global.Map())) }));
70
- }
71
- export { Map_ as Map };
151
+ export const ReadonlySetFromArray = (value) => {
152
+ const from = S
153
+ .Array(value)
154
+ .annotate({ expected: "an array of unique items that will be decoded as a ReadonlySet" });
155
+ const to = S.instanceOf(Set);
156
+ const schema = from.pipe(S.decodeTo(to, SchemaTransformation.transform({
157
+ decode: (arr) => new Set(arr),
158
+ encode: (set) => [...set]
159
+ })));
160
+ return S.revealCodec(schema);
161
+ };
162
+ /**
163
+ * An annotated `S.Array` of key-value tuples that decodes to a `ReadonlyMap`.
164
+ */
165
+ export const ReadonlyMapFromArray = (pair) => {
166
+ const from = S
167
+ .Array(S.Tuple([pair.key, pair.value]))
168
+ .annotate({ expected: "an array of key-value tuples that will be decoded as a ReadonlyMap" });
169
+ const to = S.instanceOf(Map);
170
+ const schema = from.pipe(S.decodeTo(to, SchemaTransformation.transform({
171
+ decode: (arr) => new Map(arr),
172
+ encode: (map) => [...map.entries()]
173
+ })));
174
+ return S.revealCodec(schema);
175
+ };
72
176
  /**
73
- * Like the default Schema `ReadonlySet` but with `withDefault` => new Set()
177
+ * Like the default Schema `ReadonlySet` but from Array with `withDefault` => new Set()
74
178
  */
75
- export const ReadonlySet = (value) => pipe(S.ReadonlySet(value), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Set())) }));
179
+ export const ReadonlySet = (value) => pipe(ReadonlySetFromArray(value), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Set())) }));
76
180
  /**
77
- * Like the default Schema `ReadonlyMap` but with `withDefault` => new Map()
181
+ * Like the default Schema `ReadonlyMap` but from Array with `withDefault` => new Map()
78
182
  */
79
- export const ReadonlyMap = (pair) => pipe(S.ReadonlyMap(pair.key, pair.value), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Map())) }));
183
+ export const ReadonlyMap = (pair) => pipe(ReadonlyMapFromArray(pair), (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Map())) }));
80
184
  /**
81
185
  * Like the default Schema `NullOr` but with `withDefault` => null
82
186
  */
@@ -127,7 +231,7 @@ export const transformTo = (from, to, decode) => from.pipe(S.decodeTo(to, Schema
127
231
  })));
128
232
  /** A version of transformOrFail which is only a one way mapping of From->To */
129
233
  export const transformToOrFail = (from, to, decode) => from.pipe(S.decodeTo(to, SchemaTransformation.transformOrFail({
130
- decode: decode,
234
+ decode,
131
235
  encode: (i) => Effect.fail(new SchemaIssue.Forbidden(Option.some(i), { message: "One way schema transformation, encoding is not allowed" }))
132
236
  })));
133
237
  export const provide = (self, context) => {
@@ -138,4 +242,4 @@ export const contextFromServices = (self, ...services) => Effect.gen(function* (
138
242
  const context = ServiceMap.pick(...services)(yield* Effect.services());
139
243
  return provide(self, context);
140
244
  });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHdEQUF3RDtBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFrQixZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUNsSSxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVWxELDJGQUEyRjtBQUMzRixxR0FBcUc7QUFDckcsdUdBQXVHO0FBQ3ZHLDRHQUE0RztBQUM1RyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUNwQyxXQUE2QixFQUM3QixFQUFFLENBQ0osQ0FBcUIsSUFBVSxFQUFnRSxFQUFFO0lBRS9GLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQixDQUM3QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBK0IsQ0FBQyxDQUM5RCxDQUFDLElBQWdCLENBQUMsQ0FBQTtBQUNyQixDQUFDLENBQUE7QUFFRCx1RUFBdUU7QUFDdkUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3JDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtJQUM3QixNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRTtJQUMzQixNQUFNLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0NBQ3ZELENBQUMsQ0FDSCxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxN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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9leHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELHdEQUF3RDtBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWtCLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzFILE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFVbEQsMkZBQTJGO0FBQzNGLHFHQUFxRztBQUNyRyx1R0FBdUc7QUFDdkcsNEdBQTRHO0FBQzVHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLFdBQTZCLEVBQzdCLEVBQUUsQ0FDSixDQUFxQixJQUFVLEVBQWdFLEVBQUU7SUFFL0YsT0FBTyxDQUFDLENBQUMsc0JBQXNCLENBQzdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUErQixDQUFDLENBQzlELENBQUMsSUFBZ0IsQ0FBQyxDQUFBO0FBQ3JCLENBQUMsQ0FBQTtBQUVELHVFQUF1RTtBQUN2RTs7Ozs7O0VBTUU7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVTtJQUNuQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxjQUFjLENBQUE7SUFDdkIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FB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
package/dist/Schema.d.ts CHANGED
@@ -7,7 +7,7 @@ export * from "effect/Schema";
7
7
  export * from "./Schema/Class.js";
8
8
  export { Class, TaggedClass } from "./Schema/Class.js";
9
9
  export { fromBrand, nominal } from "./Schema/brand.js";
10
- export { Array, Boolean, Date, DateValid, Finite, Literal, Map, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
10
+ export { Array, Boolean, Date, DateValid, Finite, Literal, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
11
11
  export { Int, NonNegativeInt } from "./Schema/numbers.js";
12
12
  export * from "./Schema/email.js";
13
13
  export * from "./Schema/ext.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
package/dist/Schema.js CHANGED
@@ -9,7 +9,7 @@ export * from "effect/Schema";
9
9
  export * from "./Schema/Class.js";
10
10
  export { Class, TaggedClass } from "./Schema/Class.js";
11
11
  export { fromBrand, nominal } from "./Schema/brand.js";
12
- export { Array, Boolean, Date, DateValid, Finite, Literal, Map, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
12
+ export { Array, Boolean, Date, DateValid, Finite, Literal, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
13
13
  export { Int, NonNegativeInt } from "./Schema/numbers.js";
14
14
  export * from "./Schema/email.js";
15
15
  export * from "./Schema/ext.js";
@@ -74,4 +74,4 @@ export const tags = (self) => S.Literals(self.map(getTagFromAST));
74
74
  const extendTaggedUnionWithTags = (schema) => extendM(schema.pipe(S.toTaggedUnion("_tag")), () => ({ tags: tags(schema.members) }));
75
75
  export const ExtendTaggedUnion = (schema) => extendTaggedUnionWithTags(schema);
76
76
  export const TaggedUnion = (...a) => extendTaggedUnionWithTags(S.Union(a));
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sUUFBUSxDQUFBO0FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQTJCLE1BQU0sbUJBQW1CLENBQUE7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxXQUFXLElBQUksWUFBWSxFQUF1QyxNQUFNLHlCQUF5QixDQUFBO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFcEMsY0FBYyxlQUFlLENBQUE7QUFFN0IsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNqSSxPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXpELGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xD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
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sUUFBUSxDQUFBO0FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQTJCLE1BQU0sbUJBQW1CLENBQUE7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxXQUFXLElBQUksWUFBWSxFQUF1QyxNQUFNLHlCQUF5QixDQUFBO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFcEMsY0FBYyxlQUFlLENBQUE7QUFFN0IsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVILE9BQU8sRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFekQsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYywrQkFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "4.0.0-beta.51",
3
+ "version": "4.0.0-beta.52",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
package/src/Schema/ext.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-return */
3
- import { Effect, Option, pipe, Schema, type SchemaAST, SchemaGetter, SchemaIssue, SchemaTransformation, ServiceMap } from "effect"
3
+ import { Effect, Option, pipe, type SchemaAST, SchemaGetter, SchemaIssue, SchemaTransformation, ServiceMap } from "effect"
4
4
  import * as S from "effect/Schema"
5
5
  import { isDateValid } from "effect/Schema"
6
6
  import { type NonEmptyReadonlyArray } from "../Array.js"
@@ -29,13 +29,108 @@ export const withDefaultConstructor = <A>(
29
29
  }
30
30
 
31
31
  // TODO: v4 migration - Date is no longer by default encoded to string.
32
- const DateFromString = Schema.Date.pipe(
33
- Schema.encodeTo(Schema.String, {
34
- decode: SchemaGetter.Date(),
35
- encode: SchemaGetter.transform((_) => _.toISOString())
36
- })
32
+ /*
33
+ in v4, there's the notion of `toCodecJson`, as a declaration and as a schema transformer.
34
+ this means that Date, Map/Set, etc, remain the same type Encoded as Decoded, but when transformed to and from JSON, will go through
35
+ the toCodecJson transformation, which for e.g Date will be the dateFromString transformation.
36
+
37
+ While this is a cool feature, our stack (especially the Store/Repository api) is based on having an Encoded shape representing the JSON shape, so we revert back to that for now.
38
+ */
39
+
40
+ /**
41
+ * Formats a `Date` as an ISO 8601 string, returning `"Invalid Date"` for
42
+ * invalid dates instead of throwing.
43
+ *
44
+ * When to use:
45
+ * - You want a safe `toISOString()` that never throws.
46
+ *
47
+ * Behavior:
48
+ * - Returns `date.toISOString()` on success.
49
+ * - Returns `"Invalid Date"` if `toISOString()` throws (e.g. for
50
+ * `new Date(NaN)`).
51
+ * - Pure function; does not mutate input.
52
+ *
53
+ * **Example** (Safe date formatting)
54
+ *
55
+ * ```ts
56
+ * import { Formatter } from "effect"
57
+ *
58
+ * console.log(Formatter.formatDate(new Date("2024-01-15T10:30:00Z")))
59
+ * // 2024-01-15T10:30:00.000Z
60
+ *
61
+ * console.log(Formatter.formatDate(new Date("invalid")))
62
+ * // Invalid Date
63
+ * ```
64
+ *
65
+ * See also: {@link format}
66
+ *
67
+ * @internal
68
+ */
69
+ export function formatDate(date: Date): string {
70
+ try {
71
+ return date.toISOString()
72
+ } catch {
73
+ return "Invalid Date"
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Decodes a `string` into a `Date` and encodes a `Date` back to a `string`.
79
+ *
80
+ * When to use this:
81
+ * - Parsing ISO 8601 date strings from APIs or user input.
82
+ *
83
+ * Behavior:
84
+ * - Decode: creates a `Date` from the string (like `new Date(s)`).
85
+ * - Encode: converts the `Date` to an ISO string (like `date.toISOString()`),
86
+ * returning `"Invalid Date"` for invalid dates.
87
+ *
88
+ * **Example** (Date from string)
89
+ *
90
+ * ```ts
91
+ * import { Schema, SchemaTransformation } from "effect"
92
+ *
93
+ * const schema = Schema.String.pipe(
94
+ * Schema.decodeTo(Schema.Date, SchemaTransformation.dateFromString)
95
+ * )
96
+ * ```
97
+ *
98
+ * See also:
99
+ * - {@link numberFromString}
100
+ * - {@link dateTimeUtcFromString}
101
+ *
102
+ * @category Coercions
103
+ * @since 4.0.0
104
+ */
105
+ export const dateFromString: SchemaTransformation.Transformation<globalThis.Date, string> = new SchemaTransformation
106
+ .Transformation(
107
+ SchemaGetter.Date(),
108
+ SchemaGetter.transform(formatDate)
37
109
  )
38
110
 
111
+ const DateString = S.String.annotate({ expected: "a string in ISO 8601 format that will be decoded as a Date" })
112
+
113
+ /**
114
+ * Schema type for {@link DateFromString}.
115
+ *
116
+ * @category Schemas
117
+ * @since 4.0.0
118
+ */
119
+ export interface DateFromString extends S.decodeTo<S.Date, S.String> {}
120
+
121
+ /**
122
+ * A transformation schema that parses an ISO 8601 string into a `Date`.
123
+ *
124
+ * Decoding:
125
+ * - A `string` is decoded as a `Date`.
126
+ *
127
+ * Encoding:
128
+ * - A `Date` is encoded as a `string`.
129
+ *
130
+ * @since 4.0.0
131
+ */
132
+ export const DateFromString: DateFromString = DateString.pipe(S.decodeTo(S.Date, dateFromString))
133
+
39
134
  /**
40
135
  * Like the default Schema `Date` but from String with `withDefault` => now
41
136
  */
@@ -98,36 +193,76 @@ export function Array<ValueSchema extends S.Top>(value: ValueSchema) {
98
193
  }
99
194
 
100
195
  /**
101
- * Like the default Schema `Map` but with `withDefault` => []
196
+ * An annotated `S.Array` of unique items that decodes to a `ReadonlySet`.
102
197
  */
103
- function Map_<KeySchema extends S.Top, ValueSchema extends S.Top>(input: { key: KeySchema; value: ValueSchema }) {
104
- return pipe(
105
- S.ReadonlyMap(input.key, input.value),
106
- (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new global.Map())) })
198
+ export const ReadonlySetFromArray = <ValueSchema extends S.Top>(value: ValueSchema) => {
199
+ const from = S
200
+ .Array(value)
201
+ .annotate({ expected: "an array of unique items that will be decoded as a ReadonlySet" })
202
+ const to = S.instanceOf(Set) as S.instanceOf<ReadonlySet<S.Schema.Type<ValueSchema>>>
203
+ const schema = from.pipe(
204
+ S.decodeTo(
205
+ to,
206
+ SchemaTransformation.transform({
207
+ decode: (arr: globalThis.Array<S.Schema.Type<ValueSchema>>) => new Set<S.Schema.Type<ValueSchema>>(arr),
208
+ encode: (set: Set<S.Schema.Type<ValueSchema>>) => [...set] as globalThis.Array<S.Schema.Type<ValueSchema>>
209
+ }) as any
210
+ )
107
211
  )
212
+ return S.revealCodec(schema)
108
213
  }
109
214
 
110
- export { Map_ as Map }
215
+ /**
216
+ * An annotated `S.Array` of key-value tuples that decodes to a `ReadonlyMap`.
217
+ */
218
+ export const ReadonlyMapFromArray = <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
219
+ readonly key: KeySchema
220
+ readonly value: ValueSchema
221
+ }) => {
222
+ const from = S
223
+ .Array(S.Tuple([pair.key, pair.value]))
224
+ .annotate({ expected: "an array of key-value tuples that will be decoded as a ReadonlyMap" })
225
+ const to = S.instanceOf(Map) as S.instanceOf<
226
+ ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>
227
+ >
228
+ const schema = from.pipe(
229
+ S.decodeTo(
230
+ to,
231
+ SchemaTransformation.transform({
232
+ decode: (
233
+ arr: globalThis.Array<readonly [S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>]>
234
+ ) => new Map<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>(arr),
235
+ encode: (
236
+ map: Map<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>
237
+ ) =>
238
+ [...map.entries()] as globalThis.Array<
239
+ readonly [S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>]
240
+ >
241
+ }) as any
242
+ )
243
+ )
244
+ return S.revealCodec(schema)
245
+ }
111
246
 
112
247
  /**
113
- * Like the default Schema `ReadonlySet` but with `withDefault` => new Set()
248
+ * Like the default Schema `ReadonlySet` but from Array with `withDefault` => new Set()
114
249
  */
115
250
  export const ReadonlySet = <ValueSchema extends S.Top>(value: ValueSchema) =>
116
251
  pipe(
117
- S.ReadonlySet(value),
252
+ ReadonlySetFromArray(value),
118
253
  (s) =>
119
254
  Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Set<S.Schema.Type<ValueSchema>>())) })
120
255
  )
121
256
 
122
257
  /**
123
- * Like the default Schema `ReadonlyMap` but with `withDefault` => new Map()
258
+ * Like the default Schema `ReadonlyMap` but from Array with `withDefault` => new Map()
124
259
  */
125
260
  export const ReadonlyMap = <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
126
261
  readonly key: KeySchema
127
262
  readonly value: ValueSchema
128
263
  }) =>
129
264
  pipe(
130
- S.ReadonlyMap(pair.key, pair.value),
265
+ ReadonlyMapFromArray(pair),
131
266
  (s) => Object.assign(s, { withDefault: s.pipe(withDefaultConstructor(() => new Map())) })
132
267
  )
133
268
 
@@ -232,7 +367,7 @@ export const transformTo = <To extends S.Top, From extends S.Top>(
232
367
  { message: "One way schema transformation, encoding is not allowed" }
233
368
  )
234
369
  )
235
- }) as any
370
+ })
236
371
  )
237
372
  )
238
373
 
@@ -249,7 +384,7 @@ export const transformToOrFail = <To extends S.Top, From extends S.Top, RD>(
249
384
  S.decodeTo(
250
385
  to,
251
386
  SchemaTransformation.transformOrFail({
252
- decode: decode as any,
387
+ decode,
253
388
  encode: (i: any) =>
254
389
  Effect.fail(
255
390
  new SchemaIssue.Forbidden(
@@ -257,7 +392,7 @@ export const transformToOrFail = <To extends S.Top, From extends S.Top, RD>(
257
392
  { message: "One way schema transformation, encoding is not allowed" }
258
393
  )
259
394
  )
260
- }) as any
395
+ })
261
396
  )
262
397
  )
263
398
 
package/src/Schema.ts CHANGED
@@ -13,7 +13,7 @@ export * from "./Schema/Class.js"
13
13
  export { Class, TaggedClass } from "./Schema/Class.js"
14
14
 
15
15
  export { fromBrand, nominal } from "./Schema/brand.js"
16
- export { Array, Boolean, Date, DateValid, Finite, Literal, Map, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js"
16
+ export { Array, Boolean, Date, DateValid, Finite, Literal, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js"
17
17
  export { Int, NonNegativeInt } from "./Schema/numbers.js"
18
18
 
19
19
  export * from "./Schema/email.js"
@@ -1,6 +1,6 @@
1
1
  // import { generateFromArbitrary } from "@effect-app/infra/test"
2
2
  import { Array, S } from "effect-app"
3
- import { expect, expectTypeOf, test } from "vitest"
3
+ import { describe, expect, expectTypeOf, test } from "vitest"
4
4
 
5
5
  const A = S.Struct({ a: S.NonEmptyString255, email: S.NullOr(S.Email) })
6
6
  test("works", () => {
@@ -200,3 +200,117 @@ test("TaggedUnion with TaggedClass members", () => {
200
200
  expect(schema.guards.Foo(new Bar({ count: 3 }))).toBe(false)
201
201
  expect(schema.guards.Bar(new Bar({ count: 3 }))).toBe(true)
202
202
  })
203
+
204
+ describe("ReadonlySetFromArray", () => {
205
+ test("decodes an array of strings to a Set", () => {
206
+ const schema = S.ReadonlySetFromArray(S.String)
207
+ const decoded = S.decodeUnknownSync(schema)(["a", "b", "c"])
208
+ expect(decoded).toEqual(new Set(["a", "b", "c"]))
209
+ })
210
+
211
+ test("encodes a Set back to an array", () => {
212
+ const schema = S.ReadonlySetFromArray(S.String)
213
+ const encoded = S.encodeSync(schema)(new Set(["a", "b"]))
214
+ expect(encoded).toEqual(["a", "b"])
215
+ })
216
+
217
+ test("decodes with NumberFromString as value", () => {
218
+ const schema = S.ReadonlySetFromArray(S.NumberFromString)
219
+ const decoded = S.decodeUnknownSync(schema)(["1", "2", "3"])
220
+ expect(decoded).toEqual(new Set([1, 2, 3]))
221
+ expectTypeOf(decoded).toEqualTypeOf<ReadonlySet<number>>()
222
+ })
223
+
224
+ test("encodes with NumberFromString as value", () => {
225
+ const schema = S.ReadonlySetFromArray(S.NumberFromString)
226
+ const encoded = S.encodeSync(schema)(new Set([1, 2, 3]))
227
+ expect(encoded).toEqual(["1", "2", "3"])
228
+ })
229
+
230
+ test("rejects invalid input", () => {
231
+ const schema = S.ReadonlySetFromArray(S.NumberFromString)
232
+ expect(() => S.decodeUnknownSync(schema)([1, 2])).toThrow()
233
+ })
234
+ })
235
+
236
+ describe("ReadonlyMapFromArray", () => {
237
+ test("decodes an array of tuples to a Map", () => {
238
+ const schema = S.ReadonlyMapFromArray({ key: S.String, value: S.Finite })
239
+ const decoded = S.decodeUnknownSync(schema)([["a", 1], ["b", 2]])
240
+ expect(decoded).toEqual(new Map([["a", 1], ["b", 2]]))
241
+ })
242
+
243
+ test("encodes a Map back to an array of tuples", () => {
244
+ const schema = S.ReadonlyMapFromArray({ key: S.String, value: S.Finite })
245
+ const encoded = S.encodeSync(schema)(new Map([["a", 1], ["b", 2]]))
246
+ expect(encoded).toEqual([["a", 1], ["b", 2]])
247
+ })
248
+
249
+ test("decodes with NumberFromString as key", () => {
250
+ const schema = S.ReadonlyMapFromArray({ key: S.NumberFromString, value: S.String })
251
+ const decoded = S.decodeUnknownSync(schema)([["1", "one"], ["2", "two"]])
252
+ expect(decoded).toEqual(new Map([[1, "one"], [2, "two"]]))
253
+ expectTypeOf(decoded).toEqualTypeOf<ReadonlyMap<number, string>>()
254
+ })
255
+
256
+ test("encodes with NumberFromString as key", () => {
257
+ const schema = S.ReadonlyMapFromArray({ key: S.NumberFromString, value: S.String })
258
+ const encoded = S.encodeSync(schema)(new Map([[1, "one"], [2, "two"]]))
259
+ expect(encoded).toEqual([["1", "one"], ["2", "two"]])
260
+ })
261
+
262
+ test("decodes with NumberFromString as value", () => {
263
+ const schema = S.ReadonlyMapFromArray({ key: S.String, value: S.NumberFromString })
264
+ const decoded = S.decodeUnknownSync(schema)([["a", "10"], ["b", "20"]])
265
+ expect(decoded).toEqual(new Map([["a", 10], ["b", 20]]))
266
+ expectTypeOf(decoded).toEqualTypeOf<ReadonlyMap<string, number>>()
267
+ })
268
+
269
+ test("encodes with NumberFromString as value", () => {
270
+ const schema = S.ReadonlyMapFromArray({ key: S.String, value: S.NumberFromString })
271
+ const encoded = S.encodeSync(schema)(new Map([["a", 10], ["b", 20]]))
272
+ expect(encoded).toEqual([["a", "10"], ["b", "20"]])
273
+ })
274
+
275
+ test("decodes with NumberFromString as both key and value", () => {
276
+ const schema = S.ReadonlyMapFromArray({ key: S.NumberFromString, value: S.NumberFromString })
277
+ const decoded = S.decodeUnknownSync(schema)([["1", "10"], ["2", "20"]])
278
+ expect(decoded).toEqual(new Map([[1, 10], [2, 20]]))
279
+ expectTypeOf(decoded).toEqualTypeOf<ReadonlyMap<number, number>>()
280
+ })
281
+
282
+ test("rejects invalid input", () => {
283
+ const schema = S.ReadonlyMapFromArray({ key: S.NumberFromString, value: S.String })
284
+ expect(() => S.decodeUnknownSync(schema)([[1, "val"]])).toThrow()
285
+ })
286
+ })
287
+
288
+ describe("ReadonlySet (with withDefault)", () => {
289
+ test("makeUnsafe provides withDefault", () => {
290
+ const schema = S.ReadonlySet(S.NumberFromString)
291
+ const struct = S.Struct({ items: schema.withDefault })
292
+ const made = struct.makeUnsafe({})
293
+ expect(made.items).toEqual(new Set())
294
+ })
295
+
296
+ test("decodes array with NumberFromString values", () => {
297
+ const schema = S.ReadonlySet(S.NumberFromString)
298
+ const decoded = S.decodeUnknownSync(schema)(["1", "2"])
299
+ expect(decoded).toEqual(new Set([1, 2]))
300
+ })
301
+ })
302
+
303
+ describe("ReadonlyMap (with withDefault)", () => {
304
+ test("makeUnsafe provides withDefault", () => {
305
+ const schema = S.ReadonlyMap({ key: S.NumberFromString, value: S.String })
306
+ const struct = S.Struct({ items: schema.withDefault })
307
+ const made = struct.makeUnsafe({})
308
+ expect(made.items).toEqual(new Map())
309
+ })
310
+
311
+ test("decodes array of tuples with NumberFromString keys", () => {
312
+ const schema = S.ReadonlyMap({ key: S.NumberFromString, value: S.String })
313
+ const decoded = S.decodeUnknownSync(schema)([["1", "one"]])
314
+ expect(decoded).toEqual(new Map([[1, "one"]]))
315
+ })
316
+ })