effect-app 4.0.0-beta.16 → 4.0.0-beta.161

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.
Files changed (206) hide show
  1. package/CHANGELOG.md +635 -0
  2. package/dist/Array.d.ts +1 -1
  3. package/dist/Chunk.d.ts +1 -1
  4. package/dist/Chunk.d.ts.map +1 -1
  5. package/dist/Config/SecretURL.d.ts +1 -1
  6. package/dist/Config/SecretURL.d.ts.map +1 -1
  7. package/dist/Config/SecretURL.js +2 -2
  8. package/dist/Config/internal/configSecretURL.d.ts +1 -1
  9. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  10. package/dist/Config.d.ts +7 -0
  11. package/dist/Config.d.ts.map +1 -0
  12. package/dist/Config.js +6 -0
  13. package/dist/ConfigProvider.d.ts +39 -0
  14. package/dist/ConfigProvider.d.ts.map +1 -0
  15. package/dist/ConfigProvider.js +42 -0
  16. package/dist/Context.d.ts +40 -0
  17. package/dist/Context.d.ts.map +1 -0
  18. package/dist/Context.js +67 -0
  19. package/dist/Effect.d.ts +9 -10
  20. package/dist/Effect.d.ts.map +1 -1
  21. package/dist/Effect.js +3 -6
  22. package/dist/Function.d.ts +1 -1
  23. package/dist/Function.d.ts.map +1 -1
  24. package/dist/Inputify.type.d.ts +1 -1
  25. package/dist/Layer.d.ts +6 -5
  26. package/dist/Layer.d.ts.map +1 -1
  27. package/dist/Layer.js +1 -1
  28. package/dist/NonEmptySet.d.ts +1 -1
  29. package/dist/NonEmptySet.d.ts.map +1 -1
  30. package/dist/Operations.d.ts +371 -53
  31. package/dist/Operations.d.ts.map +1 -1
  32. package/dist/Operations.js +10 -10
  33. package/dist/Option.d.ts +1 -1
  34. package/dist/Option.d.ts.map +1 -1
  35. package/dist/Pure.d.ts +5 -5
  36. package/dist/Pure.d.ts.map +1 -1
  37. package/dist/Pure.js +13 -13
  38. package/dist/Schema/Class.d.ts +69 -20
  39. package/dist/Schema/Class.d.ts.map +1 -1
  40. package/dist/Schema/Class.js +189 -22
  41. package/dist/Schema/FastCheck.d.ts +1 -1
  42. package/dist/Schema/FastCheck.d.ts.map +1 -1
  43. package/dist/Schema/Methods.d.ts +1 -1
  44. package/dist/Schema/SchemaParser.d.ts +5 -0
  45. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  46. package/dist/Schema/SchemaParser.js +6 -0
  47. package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
  48. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  49. package/dist/Schema/SpecialJsonSchema.js +122 -0
  50. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  51. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  52. package/dist/Schema/SpecialOpenApi.js +123 -0
  53. package/dist/Schema/brand.d.ts +7 -2
  54. package/dist/Schema/brand.d.ts.map +1 -1
  55. package/dist/Schema/brand.js +1 -1
  56. package/dist/Schema/email.d.ts +1 -1
  57. package/dist/Schema/email.d.ts.map +1 -1
  58. package/dist/Schema/email.js +7 -4
  59. package/dist/Schema/ext.d.ts +111 -48
  60. package/dist/Schema/ext.d.ts.map +1 -1
  61. package/dist/Schema/ext.js +118 -53
  62. package/dist/Schema/moreStrings.d.ts +111 -11
  63. package/dist/Schema/moreStrings.d.ts.map +1 -1
  64. package/dist/Schema/moreStrings.js +14 -15
  65. package/dist/Schema/numbers.d.ts +127 -15
  66. package/dist/Schema/numbers.d.ts.map +1 -1
  67. package/dist/Schema/numbers.js +10 -12
  68. package/dist/Schema/phoneNumber.d.ts +1 -1
  69. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  70. package/dist/Schema/phoneNumber.js +6 -3
  71. package/dist/Schema/schema.d.ts +1 -1
  72. package/dist/Schema/strings.d.ts +37 -5
  73. package/dist/Schema/strings.d.ts.map +1 -1
  74. package/dist/Schema/strings.js +1 -5
  75. package/dist/Schema.d.ts +103 -58
  76. package/dist/Schema.d.ts.map +1 -1
  77. package/dist/Schema.js +128 -64
  78. package/dist/Set.d.ts +1 -1
  79. package/dist/Set.d.ts.map +1 -1
  80. package/dist/TypeTest.d.ts +1 -1
  81. package/dist/Types.d.ts +1 -1
  82. package/dist/Widen.type.d.ts +1 -1
  83. package/dist/_ext/Array.d.ts +1 -1
  84. package/dist/_ext/Array.d.ts.map +1 -1
  85. package/dist/_ext/date.d.ts +1 -1
  86. package/dist/_ext/misc.d.ts +1 -1
  87. package/dist/_ext/ord.ext.d.ts +1 -1
  88. package/dist/_ext/ord.ext.d.ts.map +1 -1
  89. package/dist/builtin.d.ts +1 -1
  90. package/dist/builtin.d.ts.map +1 -1
  91. package/dist/client/apiClientFactory.d.ts +14 -30
  92. package/dist/client/apiClientFactory.d.ts.map +1 -1
  93. package/dist/client/apiClientFactory.js +18 -19
  94. package/dist/client/clientFor.d.ts +7 -6
  95. package/dist/client/clientFor.d.ts.map +1 -1
  96. package/dist/client/errors.d.ts +44 -19
  97. package/dist/client/errors.d.ts.map +1 -1
  98. package/dist/client/errors.js +35 -10
  99. package/dist/client/makeClient.d.ts +77 -29
  100. package/dist/client/makeClient.d.ts.map +1 -1
  101. package/dist/client/makeClient.js +49 -23
  102. package/dist/client.d.ts +1 -1
  103. package/dist/faker.d.ts +1 -1
  104. package/dist/faker.d.ts.map +1 -1
  105. package/dist/http/Request.d.ts +2 -2
  106. package/dist/http/Request.d.ts.map +1 -1
  107. package/dist/http/Request.js +5 -5
  108. package/dist/http/internal/lib.d.ts +1 -1
  109. package/dist/http.d.ts +1 -1
  110. package/dist/ids.d.ts +3 -3
  111. package/dist/ids.d.ts.map +1 -1
  112. package/dist/ids.js +3 -2
  113. package/dist/index.d.ts +5 -8
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +6 -8
  116. package/dist/logger.d.ts +1 -1
  117. package/dist/middleware.d.ts +8 -8
  118. package/dist/middleware.d.ts.map +1 -1
  119. package/dist/middleware.js +8 -8
  120. package/dist/rpc/MiddlewareMaker.d.ts +5 -4
  121. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  122. package/dist/rpc/MiddlewareMaker.js +26 -27
  123. package/dist/rpc/RpcContextMap.d.ts +3 -3
  124. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  125. package/dist/rpc/RpcContextMap.js +4 -4
  126. package/dist/rpc/RpcMiddleware.d.ts +5 -4
  127. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  128. package/dist/rpc/RpcMiddleware.js +1 -1
  129. package/dist/rpc.d.ts +1 -2
  130. package/dist/rpc.d.ts.map +1 -1
  131. package/dist/rpc.js +1 -2
  132. package/dist/transform.d.ts +1 -1
  133. package/dist/transform.d.ts.map +1 -1
  134. package/dist/transform.js +3 -3
  135. package/dist/utils/effectify.d.ts +1 -1
  136. package/dist/utils/extend.d.ts +1 -1
  137. package/dist/utils/extend.d.ts.map +1 -1
  138. package/dist/utils/gen.d.ts +2 -2
  139. package/dist/utils/gen.d.ts.map +1 -1
  140. package/dist/utils/logLevel.d.ts +2 -2
  141. package/dist/utils/logLevel.d.ts.map +1 -1
  142. package/dist/utils/logger.d.ts +3 -3
  143. package/dist/utils/logger.d.ts.map +1 -1
  144. package/dist/utils/logger.js +3 -3
  145. package/dist/utils.d.ts +30 -10
  146. package/dist/utils.d.ts.map +1 -1
  147. package/dist/utils.js +10 -4
  148. package/dist/validation/validators.d.ts +1 -1
  149. package/dist/validation/validators.d.ts.map +1 -1
  150. package/dist/validation.d.ts +1 -1
  151. package/dist/validation.d.ts.map +1 -1
  152. package/eslint.config.mjs +2 -2
  153. package/package.json +39 -19
  154. package/src/Config/SecretURL.ts +2 -1
  155. package/src/Config.ts +14 -0
  156. package/src/ConfigProvider.ts +48 -0
  157. package/src/{ServiceMap.ts → Context.ts} +52 -59
  158. package/src/Effect.ts +12 -14
  159. package/src/Layer.ts +5 -4
  160. package/src/Operations.ts +14 -14
  161. package/src/Pure.ts +17 -18
  162. package/src/Schema/Class.ts +278 -62
  163. package/src/Schema/SchemaParser.ts +12 -0
  164. package/src/Schema/SpecialJsonSchema.ts +137 -0
  165. package/src/Schema/SpecialOpenApi.ts +130 -0
  166. package/src/Schema/brand.ts +9 -1
  167. package/src/Schema/email.ts +7 -2
  168. package/src/Schema/ext.ts +205 -86
  169. package/src/Schema/moreStrings.ts +22 -20
  170. package/src/Schema/numbers.ts +14 -16
  171. package/src/Schema/phoneNumber.ts +5 -1
  172. package/src/Schema/strings.ts +4 -8
  173. package/src/Schema.ts +272 -99
  174. package/src/client/apiClientFactory.ts +107 -113
  175. package/src/client/clientFor.ts +6 -1
  176. package/src/client/errors.ts +42 -17
  177. package/src/client/makeClient.ts +156 -63
  178. package/src/http/Request.ts +7 -4
  179. package/src/ids.ts +2 -1
  180. package/src/index.ts +5 -10
  181. package/src/middleware.ts +7 -9
  182. package/src/rpc/MiddlewareMaker.ts +36 -47
  183. package/src/rpc/README.md +2 -2
  184. package/src/rpc/RpcContextMap.ts +6 -5
  185. package/src/rpc/RpcMiddleware.ts +5 -4
  186. package/src/rpc.ts +0 -1
  187. package/src/transform.ts +2 -2
  188. package/src/utils/gen.ts +1 -1
  189. package/src/utils/logger.ts +2 -2
  190. package/src/utils.ts +47 -11
  191. package/test/dist/rpc.test.d.ts.map +1 -1
  192. package/test/dist/secretURL.test.d.ts.map +1 -0
  193. package/test/dist/special.test.d.ts.map +1 -0
  194. package/test/rpc.test.ts +38 -6
  195. package/test/schema.test.ts +609 -4
  196. package/test/secretURL.test.ts +157 -0
  197. package/test/special.test.ts +1023 -0
  198. package/test/utils.test.ts +6 -6
  199. package/tsconfig.base.json +3 -4
  200. package/tsconfig.json +0 -1
  201. package/tsconfig.json.bak +2 -2
  202. package/tsconfig.src.json +29 -29
  203. package/tsconfig.test.json +2 -2
  204. package/dist/ServiceMap.d.ts +0 -44
  205. package/dist/ServiceMap.d.ts.map +0 -1
  206. package/dist/ServiceMap.js +0 -91
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecialJsonSchema.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialJsonSchema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAwB,MAAM,QAAQ,CAAA;AAE3E;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,GAAG,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,mBAAmB,GACnC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAYtC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA6BxD;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAerE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAuCxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAEvF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * SpecialJsonSchema — A variant of Schema.toJsonSchemaDocument that
3
+ * post-processes the output (e.g. flattens simple allOf).
4
+ */
5
+ import { SchemaRepresentation } from "effect";
6
+ /**
7
+ * Converts a schema to a JSON Schema Document (draft-2020-12), with
8
+ * post-processing that flattens simple allOf entries.
9
+ */
10
+ export function specialJsonSchemaDocument(schema, options) {
11
+ const doc = SchemaRepresentation.fromAST(schema.ast);
12
+ const jd = SchemaRepresentation.toJsonSchemaDocument(doc, options);
13
+ const processedDefs = {};
14
+ for (const [key, def] of Object.entries(jd.definitions)) {
15
+ processedDefs[key] = postProcessJsonSchema(def);
16
+ }
17
+ return {
18
+ dialect: "draft-2020-12",
19
+ schema: postProcessJsonSchema(jd.schema),
20
+ definitions: processedDefs
21
+ };
22
+ }
23
+ /**
24
+ * Flattens `allOf` entries into the parent when the parent already has a
25
+ * `type` and every `allOf` entry is a plain constraint object (no `$ref`,
26
+ * no `type`). Merged properties from `allOf` entries win on conflict.
27
+ */
28
+ export function flattenSimpleAllOf(obj) {
29
+ if (obj === null || typeof obj !== "object")
30
+ return obj;
31
+ if (globalThis.Array.isArray(obj)) {
32
+ return obj.map(flattenSimpleAllOf);
33
+ }
34
+ const record = obj;
35
+ const result = {};
36
+ for (const [key, value] of Object.entries(record)) {
37
+ result[key] = flattenSimpleAllOf(value);
38
+ }
39
+ if (result["type"] && globalThis.Array.isArray(result["allOf"])) {
40
+ const allOf = result["allOf"];
41
+ const canFlatten = allOf.every((entry) => typeof entry === "object" && entry !== null && !("$ref" in entry) && !("type" in entry));
42
+ if (canFlatten) {
43
+ const { allOf: _, ...rest } = result;
44
+ const merged = { ...rest };
45
+ for (const entry of allOf) {
46
+ Object.assign(merged, entry);
47
+ }
48
+ return merged;
49
+ }
50
+ }
51
+ return result;
52
+ }
53
+ /**
54
+ * Recursively removes `additionalProperties: false` from JSON Schema objects.
55
+ * Only removes when the value is exactly `false` -- other values are left intact.
56
+ */
57
+ export function removeAdditionalPropertiesFalse(obj) {
58
+ if (obj === null || typeof obj !== "object")
59
+ return obj;
60
+ if (globalThis.Array.isArray(obj)) {
61
+ return obj.map(removeAdditionalPropertiesFalse);
62
+ }
63
+ const record = obj;
64
+ const result = {};
65
+ for (const [key, value] of Object.entries(record)) {
66
+ if (key === "additionalProperties" && value === false)
67
+ continue;
68
+ result[key] = removeAdditionalPropertiesFalse(value);
69
+ }
70
+ return result;
71
+ }
72
+ /**
73
+ * Flattens nested `anyOf` entries: if an anyOf entry is itself just `{ anyOf: [...] }`
74
+ * with no other keys, its children are inlined. If only one item remains, the anyOf
75
+ * wrapper is removed entirely.
76
+ */
77
+ export function flattenNestedAnyOf(obj) {
78
+ if (obj === null || typeof obj !== "object")
79
+ return obj;
80
+ if (globalThis.Array.isArray(obj))
81
+ return obj.map(flattenNestedAnyOf);
82
+ const record = obj;
83
+ const result = {};
84
+ for (const [key, value] of Object.entries(record)) {
85
+ result[key] = flattenNestedAnyOf(value);
86
+ }
87
+ if (globalThis.Array.isArray(result["anyOf"])) {
88
+ const anyOf = result["anyOf"];
89
+ const flattened = [];
90
+ for (const entry of anyOf) {
91
+ if (typeof entry === "object"
92
+ && entry !== null
93
+ && !globalThis.Array.isArray(entry)
94
+ && "anyOf" in entry
95
+ && Object.keys(entry).length === 1
96
+ && globalThis.Array.isArray(entry["anyOf"])) {
97
+ flattened.push(...entry["anyOf"]);
98
+ }
99
+ else {
100
+ flattened.push(entry);
101
+ }
102
+ }
103
+ if (flattened.length === 1) {
104
+ const { anyOf: _, ...rest } = result;
105
+ const single = flattened[0];
106
+ if (typeof single === "object" && single !== null && !globalThis.Array.isArray(single)) {
107
+ return { ...rest, ...single };
108
+ }
109
+ return single;
110
+ }
111
+ result["anyOf"] = flattened;
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Applies JSON Schema post-processing: flattens simple allOf,
117
+ * flattens nested anyOf, then strips additionalProperties: false.
118
+ */
119
+ export function postProcessJsonSchema(obj) {
120
+ return removeAdditionalPropertiesFalse(flattenNestedAnyOf(flattenSimpleAllOf(obj)));
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbEpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL1NwZWNpYWxKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBZ0Msb0JBQW9CLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUFrQixFQUNsQixPQUFvQztJQUVwQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGFBQWEsR0FBMkIsRUFBRSxDQUFBO0lBQ2hELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3hELGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3hDLFdBQVcsRUFBRSxhQUFhO0tBQzNCLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFZO0lBQzdDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUE7SUFFdkQsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFD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
@@ -0,0 +1,32 @@
1
+ /**
2
+ * SpecialOpenApi — Deduplicates `components/schemas` entries in an OpenAPI spec
3
+ * and applies JSON Schema post-processing (null removal, allOf flattening).
4
+ *
5
+ * When `OpenApi.fromApi` generates the spec, different AST nodes sharing the
6
+ * same identifier can produce duplicate entries (e.g. "X" and "X1") in
7
+ * `components.schemas`. This module provides a transform function that
8
+ * collapses those duplicates, rewrites all `$ref` pointers accordingly,
9
+ * and post-processes schemas for better codegen compatibility.
10
+ *
11
+ * Usage with the OpenApi `Transform` annotation:
12
+ *
13
+ * ```ts
14
+ * import { OpenApi } from "effect/unstable"
15
+ * import { deduplicateOpenApiSchemas } from "./SpecialOpenApi.js"
16
+ *
17
+ * const api = HttpApi.make("myApi")
18
+ * .pipe(HttpApi.annotateContext(OpenApi.annotations({ transform: deduplicateOpenApiSchemas })))
19
+ * ```
20
+ */
21
+ /**
22
+ * Deduplicates `components.schemas` entries in an OpenAPI spec.
23
+ *
24
+ * Entries sharing the same base identifier (e.g. "X" and "X1") whose JSON
25
+ * representations are identical are collapsed into a single canonical entry,
26
+ * and all `$ref` pointers throughout the spec are rewritten to point to
27
+ * the canonical key.
28
+ *
29
+ * Designed to be used as the `transform` option in `OpenApi.annotations`.
30
+ */
31
+ export declare function deduplicateOpenApiSchemas(spec: Record<string, any>): Record<string, any>;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbE9wZW5BcGkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvU3BlY2lhbE9wZW5BcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFJSDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBZ0IseUJBQXlCLENBQ3ZDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUN4QixNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQXFEckIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecialOpenApi.d.ts","sourceRoot":"","sources":["../../src/Schema/SpecialOpenApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqDrB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * SpecialOpenApi — Deduplicates `components/schemas` entries in an OpenAPI spec
3
+ * and applies JSON Schema post-processing (null removal, allOf flattening).
4
+ *
5
+ * When `OpenApi.fromApi` generates the spec, different AST nodes sharing the
6
+ * same identifier can produce duplicate entries (e.g. "X" and "X1") in
7
+ * `components.schemas`. This module provides a transform function that
8
+ * collapses those duplicates, rewrites all `$ref` pointers accordingly,
9
+ * and post-processes schemas for better codegen compatibility.
10
+ *
11
+ * Usage with the OpenApi `Transform` annotation:
12
+ *
13
+ * ```ts
14
+ * import { OpenApi } from "effect/unstable"
15
+ * import { deduplicateOpenApiSchemas } from "./SpecialOpenApi.js"
16
+ *
17
+ * const api = HttpApi.make("myApi")
18
+ * .pipe(HttpApi.annotateContext(OpenApi.annotations({ transform: deduplicateOpenApiSchemas })))
19
+ * ```
20
+ */
21
+ import { postProcessJsonSchema } from "./SpecialJsonSchema.js";
22
+ /**
23
+ * Deduplicates `components.schemas` entries in an OpenAPI spec.
24
+ *
25
+ * Entries sharing the same base identifier (e.g. "X" and "X1") whose JSON
26
+ * representations are identical are collapsed into a single canonical entry,
27
+ * and all `$ref` pointers throughout the spec are rewritten to point to
28
+ * the canonical key.
29
+ *
30
+ * Designed to be used as the `transform` option in `OpenApi.annotations`.
31
+ */
32
+ export function deduplicateOpenApiSchemas(spec) {
33
+ const components = spec["components"];
34
+ if (!components)
35
+ return spec;
36
+ const schemas = components["schemas"];
37
+ if (!schemas)
38
+ return spec;
39
+ const keys = Object.keys(schemas);
40
+ if (keys.length === 0)
41
+ return spec;
42
+ // Group keys by base identifier (strip trailing digits)
43
+ const groups = new Map();
44
+ for (const key of keys) {
45
+ const base = getBaseIdentifier(key);
46
+ const fingerprint = JSON.stringify(schemas[key]);
47
+ const group = groups.get(base);
48
+ if (group === undefined) {
49
+ groups.set(base, [{ key, fingerprint }]);
50
+ }
51
+ else {
52
+ group.push({ key, fingerprint });
53
+ }
54
+ }
55
+ // Build remapping from duplicate keys to canonical keys
56
+ const remapping = new Map();
57
+ for (const [, group] of groups) {
58
+ if (group.length <= 1)
59
+ continue;
60
+ const seen = new Map(); // fingerprint -> canonical key
61
+ for (const entry of group) {
62
+ const canonical = seen.get(entry.fingerprint);
63
+ if (canonical !== undefined) {
64
+ remapping.set(entry.key, canonical);
65
+ }
66
+ else {
67
+ seen.set(entry.fingerprint, entry.key);
68
+ }
69
+ }
70
+ }
71
+ if (remapping.size === 0)
72
+ return postProcessJsonSchema(spec);
73
+ // Build new schemas object without duplicates
74
+ const newSchemas = {};
75
+ for (const key of keys) {
76
+ if (!remapping.has(key)) {
77
+ newSchemas[key] = schemas[key];
78
+ }
79
+ }
80
+ // Deep clone the spec, replace schemas, and rewrite all $ref pointers
81
+ const newSpec = structuredClone(spec);
82
+ newSpec["components"]["schemas"] = newSchemas;
83
+ rewriteRefs(newSpec, remapping);
84
+ return postProcessJsonSchema(newSpec);
85
+ }
86
+ /**
87
+ * Extracts the base identifier from a schema key by stripping trailing
88
+ * digits appended by the gen() function.
89
+ * E.g. "X1" -> "X", "X" -> "X", "MyType2" -> "MyType"
90
+ */
91
+ function getBaseIdentifier(key) {
92
+ const match = key.match(/^(.+?)(\d+)$/);
93
+ return match ? match[1] : key;
94
+ }
95
+ /**
96
+ * Recursively rewrites `$ref` values in a JSON object tree.
97
+ * Mutates the object in-place (caller should pass a deep clone).
98
+ */
99
+ function rewriteRefs(obj, remapping) {
100
+ if (obj === null || typeof obj !== "object")
101
+ return;
102
+ if (Array.isArray(obj)) {
103
+ for (const item of obj) {
104
+ rewriteRefs(item, remapping);
105
+ }
106
+ return;
107
+ }
108
+ if (typeof obj.$ref === "string") {
109
+ // OpenAPI refs look like "#/components/schemas/X1"
110
+ const prefix = "#/components/schemas/";
111
+ if (obj.$ref.startsWith(prefix)) {
112
+ const refKey = obj.$ref.slice(prefix.length);
113
+ const canonical = remapping.get(refKey);
114
+ if (canonical !== undefined) {
115
+ obj.$ref = prefix + canonical;
116
+ }
117
+ }
118
+ }
119
+ for (const value of Object.values(obj)) {
120
+ rewriteRefs(value, remapping);
121
+ }
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlY2lhbE9wZW5BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL1NwZWNpYWxPcGVuQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFOUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxJQUF5QjtJQUV6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFvQyxDQUFBO0lBQ3hFLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDNUIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBb0MsQ0FBQTtJQUN4RSxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXpCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUVsQyx3REFBd0Q7SUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXVELENBQUE7SUFDN0UsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcs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
@@ -27,9 +27,14 @@ export interface Constructor<in out A extends B.Brand<any>> {
27
27
  type BrandAnnotations<C extends B.Brand<any>> = S.Annotations.Filter & (C extends string ? {
28
28
  readonly toArbitrary?: S.Annotations.ToArbitrary.Declaration<C, readonly []>;
29
29
  } : {});
30
- export declare const fromBrand: <C extends B.Brand<any>>(constructor: Constructor<C>, options?: BrandAnnotations<C>) => <Self extends S.Top>(self: Self) => S.brand<Self["~rebuild.out"], B.Brand.Keys<C>>;
30
+ type BrandedSchema<Self extends S.Top, C extends B.Brand<any>> = Omit<S.brand<Self["Rebuild"], B.Brand.Keys<C>>, "Type" | "Iso" | "~type.make"> & {
31
+ readonly Type: C;
32
+ readonly Iso: C;
33
+ readonly "~type.make": C;
34
+ };
35
+ export declare const fromBrand: <C extends B.Brand<any>>(constructor: Constructor<C>, options?: BrandAnnotations<C>) => <Self extends S.Top>(self: Self) => BrandedSchema<Self, C>;
31
36
  export type Brands<P> = P extends B.Brand<any> ? B.Brand.Brands<P> : never;
32
37
  export type Unbranded<P> = P extends B.Brand<any> ? B.Brand.Unbranded<P> : P;
33
38
  export declare const nominal: <A extends B.Brand<any>>() => Constructor<A>;
34
39
  export {};
35
- //# sourceMappingURL=brand.d.ts.map
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvYnJhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3BDLE9BQU8sS0FBSyxDQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFFbEMsTUFBTSxXQUFXLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN4RDs7O09BR0c7SUFDSCxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzFEOzs7T0FHRztJQUNILEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0NBQzNDO0FBRUQsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFDeEMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQ3BCLENBQ0EsQ0FBQyxTQUFTLE1BQU0sR0FBRztJQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7Q0FBRSxHQUMvRixFQUFFLENBQ1AsQ0FBQTtBQUVILEtBQUssYUFBYSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUN6RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUM5RTtJQUNBLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2hCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ2YsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7Q0FDekIsQ0FBQTtBQUVILGVBQU8sTUFBTSxTQUFTLEdBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQ2pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BRTlCLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxRQUFRLElBQUksS0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FHdEQsQ0FBQTtBQUVELE1BQU0sTUFBTSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUM5RCxLQUFLLENBQUE7QUFFVCxNQUFNLE1BQU0sU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFNUUsZUFBTyxNQUFNLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBSXZDLENBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/Schema/brand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAElC,MAAM,WAAW,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACxD;;;OAGG;IACH,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;IAC1D;;;OAGG;IACH,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAC3C;AAED,KAAK,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IACxC,CAAC,CAAC,WAAW,CAAC,MAAM,GACpB,CACA,CAAC,SAAS,MAAM,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;CAAE,GAC/F,EAAE,CACP,CAAA;AAEH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAC9C,aAAa,WAAW,CAAC,CAAC,CAAC,EAC3B,UAAU,gBAAgB,CAAC,CAAC,CAAC,MAE9B,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,KAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAG9E,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAC9D,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE5E,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,CAIvC,CAAA"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/Schema/brand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAElC,MAAM,WAAW,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IACxD;;;OAGG;IACH,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;IAC1D;;;OAGG;IACH,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAC3C;AAED,KAAK,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IACxC,CAAC,CAAC,WAAW,CAAC,MAAM,GACpB,CACA,CAAC,SAAS,MAAM,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;CAAE,GAC/F,EAAE,CACP,CAAA;AAEH,KAAK,aAAa,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IACzD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC,GAC9E;IACA,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;IACf,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;CACzB,CAAA;AAEH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eACjC,WAAW,CAAC,CAAC,CAAC,YACjB,gBAAgB,CAAC,CAAC,CAAC,MAE9B,IAAI,SAAS,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAGtD,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAC9D,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE5E,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,CAIvC,CAAA"}
@@ -5,4 +5,4 @@ export const fromBrand = (constructor, options) => (self) => {
5
5
  return options ? branded.pipe(S.annotate(options)) : branded;
6
6
  };
7
7
  export const nominal = () => B.nominal();
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL2JyYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxDQUFDLE1BQU0sY0FBYyxDQUFBO0FBRWpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBZ0NsQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsV0FBMkIsRUFDM0IsT0FBNkIsRUFDN0IsRUFBRSxDQUNKLENBQXFCLElBQVUsRUFBa0QsRUFBRTtJQUNqRixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksT0FBTyxFQUFFLFdBQWtCLENBQUMsQ0FBQyxJQUFXLENBQUMsQ0FBQTtJQUM1RixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUUsT0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQWMsQ0FBQTtBQUM5RSxDQUFDLENBQUE7QUFPRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQWlELEdBSW5FLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFZLENBQUEifQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL2JyYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxDQUFDLE1BQU0sY0FBYyxDQUFBO0FBRWpDLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBd0NsQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsV0FBMkIsRUFDM0IsT0FBNkIsRUFDN0IsRUFBRSxDQUNKLENBQXFCLElBQVUsRUFBMEIsRUFBRTtJQUN6RCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksT0FBTyxFQUFFLFdBQWtCLENBQUMsQ0FBQyxJQUFXLENBQUMsQ0FBQTtJQUM1RixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUUsT0FBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQWMsQ0FBQTtBQUM5RSxDQUFDLENBQUE7QUFPRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQWlELEdBSW5FLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFZLENBQUEifQ==
@@ -6,4 +6,4 @@ export interface EmailBrand extends Simplify<NonEmptyStringBrand & B.Brand<"Emai
6
6
  }
7
7
  export type Email = string & EmailBrand;
8
8
  export declare const Email: S.refine<Email, S.String>;
9
- //# sourceMappingURL=email.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzVDLE9BQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV2RCxNQUFNLFdBQVcsVUFBVyxTQUFRLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQUc7QUFFdkYsTUFBTSxNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFBO0FBRXZDLGVBQU8sTUFBTSxLQUFLLDJCQWlCZixDQUFBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/Schema/email.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,WAAW,UAAW,SAAQ,QAAQ,CAAC,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAAG;AAEvF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,UAAU,CAAA;AAEvC,eAAO,MAAM,KAAK,2BAYf,CAAA"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/Schema/email.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,WAAW,UAAW,SAAQ,QAAQ,CAAC,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAAG;AAEvF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,UAAU,CAAA;AAEvC,eAAO,MAAM,KAAK,2BAiBf,CAAA"}
@@ -2,12 +2,15 @@ import { isValidEmail } from "effect-app/validation";
2
2
  import * as S from "effect/Schema";
3
3
  export const Email = S
4
4
  .String
5
- .pipe(S.refine(isValidEmail, {
6
- identifier: "Email",
5
+ .pipe(S.annotate({
7
6
  title: "Email",
8
7
  description: "an email according to RFC 5322",
9
- jsonSchema: { format: "email", minLength: 3, /* a@b */ maxLength: 998 }
8
+ format: "email"
9
+ }), S.check(S.isMinLength(3), /* a@b */ S.isMaxLength(998)), S.refine(isValidEmail, {
10
+ identifier: "Email",
11
+ description: "an email according to RFC 5322",
12
+ jsonSchema: { format: "email", minLength: 3, maxLength: 998 }
10
13
  }), S.annotate({
11
14
  toArbitrary: () => (fc) => fc.emailAddress().map((_) => _)
12
15
  }));
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL2VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQVNsQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztLQUNuQixNQUFNO0tBQ04sSUFBSSxDQUNILENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBeUMsRUFBRTtJQUNsRCxVQUFVLEVBQUUsT0FBTztJQUNuQixLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxnQ0FBZ0M7SUFDN0MsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0NBQ3hFLENBQUMsRUFDRixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ1QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFVLENBQUM7Q0FDcEUsQ0FBQyxDQUNILENBQUEifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL2VtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQVNsQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztLQUNuQixNQUFNO0tBQ04sSUFBSSxDQUNILENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDVCxLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxnQ0FBZ0M7SUFDN0MsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQyxFQUNGLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUN2RCxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQXlDLEVBQUU7SUFDbEQsVUFBVSxFQUFFLE9BQU87SUFDbkIsV0FBVyxFQUFFLGdDQUFnQztJQUM3QyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtDQUM5RCxDQUFDLEVBQ0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNULFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBVSxDQUFDO0NBQ3BFLENBQUMsQ0FDSCxDQUFBIn0=
@@ -1,84 +1,143 @@
1
- import { Effect, Schema, type SchemaAST, SchemaIssue, type ServiceMap } from "effect";
1
+ import { Effect, type SchemaAST, SchemaIssue } from "effect";
2
2
  import * as S from "effect/Schema";
3
3
  import { type NonEmptyReadonlyArray } from "../Array.js";
4
+ import * as Context from "../Context.js";
4
5
  import { type AST } from "./schema.js";
5
- export declare const withDefaultConstructor: <A>(makeDefault: () => NoInfer<A>) => <Self extends S.Top>(self: Self) => S.withConstructorDefault<Self & S.WithoutConstructorDefault>;
6
+ type ProvidedCodec<Self extends S.Top, R> = S.Codec<Self["Type"], Self["Encoded"], Exclude<Self["DecodingServices"], R>, Exclude<Self["EncodingServices"], R>>;
7
+ export declare const DefaultParseOptions: SchemaAST.ParseOptions;
8
+ type DecodeLike = (schema: any) => (input: any, options?: SchemaAST.ParseOptions) => any;
9
+ export declare const withDefaultParseOptions: <Decode extends DecodeLike>(decode: Decode, defaultParseOptions?: SchemaAST.ParseOptions) => Decode;
10
+ /**
11
+ * Schema type for {@link DateFromString}.
12
+ *
13
+ * @category Schemas
14
+ * @since 4.0.0
15
+ */
16
+ export interface DateFromString extends S.decodeTo<S.Date, S.String> {
17
+ }
18
+ /**
19
+ * A transformation schema that parses an ISO 8601 string into a `Date`.
20
+ *
21
+ * Decoding:
22
+ * - A `string` is decoded as a `Date`.
23
+ *
24
+ * Encoding:
25
+ * - A `Date` is encoded as a `string`.
26
+ *
27
+ * @since 4.0.0
28
+ */
29
+ export declare const DateFromString: DateFromString;
6
30
  /**
7
31
  * Like the default Schema `Date` but from String with `withDefault` => now
8
32
  */
9
- export declare const Date: Schema.decodeTo<Schema.Date, Schema.String, never, never> & {
10
- withDefault: Schema.withConstructorDefault<Schema.decodeTo<Schema.Date, Schema.String, never, never> & Schema.WithoutConstructorDefault>;
33
+ export declare const Date: DateFromString & {
34
+ withDefault: S.withConstructorDefault<DateFromString>;
35
+ withDecodingDefaultType: S.withDecodingDefaultType<DateFromString>;
36
+ };
37
+ /**
38
+ * Like the default Schema `DateValid` but from String with `withDefault` => now
39
+ */
40
+ export declare const DateValid: S.decodeTo<S.Date, S.String, never, never> & {
41
+ withDefault: S.withConstructorDefault<DateFromString>;
42
+ withDecodingDefaultType: S.withDecodingDefaultType<DateFromString>;
11
43
  };
12
44
  /**
13
45
  * Like the default Schema `Boolean` but with `withDefault` => false
14
46
  */
15
- export declare const Boolean: Schema.Boolean & {
16
- withDefault: Schema.withConstructorDefault<Schema.Boolean & Schema.WithoutConstructorDefault>;
47
+ export declare const Boolean: S.Boolean & {
48
+ withDefault: S.withConstructorDefault<S.Boolean>;
49
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Boolean>;
17
50
  };
18
51
  /**
52
+ * You probably want to use `Finite` instead of this.
19
53
  * Like the default Schema `Number` but with `withDefault` => 0
20
54
  */
21
- export declare const Number: Schema.Number & {
22
- withDefault: Schema.withConstructorDefault<Schema.Number & Schema.WithoutConstructorDefault>;
55
+ export declare const Number: S.Number & {
56
+ withDefault: S.withConstructorDefault<S.Number>;
57
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Number>;
23
58
  };
24
59
  /**
25
- * Like the default Schema `Literal` but with `withDefault` => literals[0]
60
+ * Like the default Schema `Finite` but with `withDefault` => 0
26
61
  */
27
- export declare const Literal: <Literals extends NonEmptyReadonlyArray<AST.LiteralValue>>(...literals: Literals) => Schema.Literals<Literals> & {
28
- changeDefault: <A extends Literals[number]>(a: A) => Schema.Literals<Literals> & {
62
+ export declare const Finite: S.Finite & {
63
+ withDefault: S.withConstructorDefault<S.Finite>;
64
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Finite>;
65
+ };
66
+ /**
67
+ * Like the default Schema `Literals` but with `withDefault` => literals[0]
68
+ */
69
+ export declare const Literals: <const Literals extends NonEmptyReadonlyArray<AST.LiteralValue>>(literals: Literals) => S.Literals<Literals> & {
70
+ changeDefault: <A extends Literals[number]>(a: A) => S.Literals<Literals> & {
29
71
  Default: A;
30
- withDefault: Schema.withConstructorDefault<Schema.Literals<Literals> & Schema.WithoutConstructorDefault>;
72
+ withDefault: S.withConstructorDefault<S.Literals<Literals>>;
73
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Literals<Literals>>;
31
74
  };
32
- Default: (typeof literals)[0];
33
- withDefault: Schema.withConstructorDefault<Schema.Literals<Literals> & Schema.WithoutConstructorDefault>;
75
+ Default: Literals[0];
76
+ withDefault: S.withConstructorDefault<S.Literals<Literals>>;
77
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Literals<Literals>>;
34
78
  };
35
79
  /**
36
80
  * Like the default Schema `Array` but with `withDefault` => []
37
81
  */
38
- export declare function Array<Value extends S.Top>(value: Value): Schema.$Array<Value> & {
39
- withDefault: Schema.withConstructorDefault<Schema.$Array<Value> & Schema.WithoutConstructorDefault>;
82
+ export declare function Array<ValueSchema extends S.Top>(value: ValueSchema): S.$Array<ValueSchema> & {
83
+ withDefault: S.withConstructorDefault<S.$Array<ValueSchema>>;
84
+ withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<ValueSchema>>;
40
85
  };
41
86
  /**
42
- * Like the default Schema `Map` but with `withDefault` => []
87
+ * An annotated `S.Array` of unique items that decodes to a `ReadonlySet`.
43
88
  */
44
- declare function Map_<Key extends S.Top, Value extends S.Top>(input: {
45
- key: Key;
46
- value: Value;
47
- }): Schema.$ReadonlyMap<Key, Value> & {
48
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlyMap<Key, Value> & Schema.WithoutConstructorDefault>;
49
- };
50
- export { Map_ as Map };
89
+ export declare const ReadonlySetFromArray: <ValueSchema extends S.Top>(value: ValueSchema) => S.decodeTo<S.instanceOf<ReadonlySet<S.Schema.Type<ValueSchema>>, ReadonlySet<S.Schema.Type<ValueSchema>>>, S.$Array<ValueSchema>, never, never>;
51
90
  /**
52
- * Like the default Schema `ReadonlySet` but with `withDefault` => new Set()
91
+ * An annotated `S.Array` of key-value tuples that decodes to a `ReadonlyMap`.
53
92
  */
54
- export declare const ReadonlySet: <Value extends S.Top>(value: Value) => Schema.$ReadonlySet<Value> & {
55
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlySet<Value> & Schema.WithoutConstructorDefault>;
93
+ export declare const ReadonlyMapFromArray: <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
94
+ readonly key: KeySchema;
95
+ readonly value: ValueSchema;
96
+ }) => S.decodeTo<S.instanceOf<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>>, S.$Array<S.Tuple<readonly [KeySchema, ValueSchema]>>, never, never>;
97
+ /**
98
+ * Like the default Schema `ReadonlySet` but from Array with `withDefault` => new Set()
99
+ */
100
+ export declare const ReadonlySet: <ValueSchema extends S.Top>(value: ValueSchema) => S.decodeTo<S.instanceOf<ReadonlySet<S.Schema.Type<ValueSchema>>, ReadonlySet<S.Schema.Type<ValueSchema>>>, S.$Array<ValueSchema>, never, never> & {
101
+ withDefault: S.withConstructorDefault<S.decodeTo<S.instanceOf<ReadonlySet<S.Schema.Type<ValueSchema>>, ReadonlySet<S.Schema.Type<ValueSchema>>>, S.$Array<ValueSchema>, never, never>>;
102
+ withDecodingDefaultType: S.withDecodingDefaultType<S.decodeTo<S.instanceOf<ReadonlySet<S.Schema.Type<ValueSchema>>, ReadonlySet<S.Schema.Type<ValueSchema>>>, S.$Array<ValueSchema>, never, never>>;
56
103
  };
57
104
  /**
58
- * Like the default Schema `ReadonlyMap` but with `withDefault` => new Map()
105
+ * Like the default Schema `ReadonlyMap` but from Array with `withDefault` => new Map()
59
106
  */
60
- export declare const ReadonlyMap: <K extends S.Top, V extends S.Top>(pair: {
61
- readonly key: K;
62
- readonly value: V;
63
- }) => Schema.$ReadonlyMap<K, V> & {
64
- withDefault: Schema.withConstructorDefault<Schema.$ReadonlyMap<K, V> & Schema.WithoutConstructorDefault>;
107
+ export declare const ReadonlyMap: <KeySchema extends S.Top, ValueSchema extends S.Top>(pair: {
108
+ readonly key: KeySchema;
109
+ readonly value: ValueSchema;
110
+ }) => S.decodeTo<S.instanceOf<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>>, S.$Array<S.Tuple<readonly [KeySchema, ValueSchema]>>, never, never> & {
111
+ withDefault: S.withConstructorDefault<S.decodeTo<S.instanceOf<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>>, S.$Array<S.Tuple<readonly [KeySchema, ValueSchema]>>, never, never>>;
112
+ withDecodingDefaultType: S.withDecodingDefaultType<S.decodeTo<S.instanceOf<ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>, ReadonlyMap<S.Schema.Type<KeySchema>, S.Schema.Type<ValueSchema>>>, S.$Array<S.Tuple<readonly [KeySchema, ValueSchema]>>, never, never>>;
65
113
  };
66
114
  /**
67
115
  * Like the default Schema `NullOr` but with `withDefault` => null
68
116
  */
69
- export declare const NullOr: <S extends S.Top>(self: S) => Schema.NullOr<S> & {
70
- withDefault: Schema.withConstructorDefault<Schema.NullOr<S> & Schema.WithoutConstructorDefault>;
117
+ export declare const NullOr: <Schema extends S.Top>(self: Schema) => S.NullOr<Schema> & {
118
+ withDefault: S.withConstructorDefault<S.NullOr<Schema>>;
119
+ withDecodingDefaultType: S.withDecodingDefaultType<S.NullOr<Schema>>;
71
120
  };
72
- export declare const defaultDate: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
73
- export declare const defaultBool: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
74
- export declare const defaultNullable: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
75
- export declare const defaultArray: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
76
- export declare const defaultMap: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
77
- export declare const defaultSet: (s: S.Top) => Schema.withConstructorDefault<Schema.Top & Schema.WithoutConstructorDefault>;
121
+ export declare const defaultDate: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
122
+ export declare const defaultBool: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
123
+ export declare const defaultNullable: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
124
+ export declare const defaultArray: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
125
+ export declare const defaultMap: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
126
+ export declare const defaultSet: <Schema extends S.Top & S.WithoutConstructorDefault>(schema: Schema) => S.withConstructorDefault<Schema>;
78
127
  export declare const withDefaultMake: <Self extends S.Top>(s: Self) => WithDefaults<Self> & Self;
79
128
  export type WithDefaults<Self extends S.Top> = (i: Self["Encoded"], options?: SchemaAST.ParseOptions) => Self["Type"];
80
- export declare const inputDate: Schema.Union<readonly [Schema.Date, Schema.Date]> & {
81
- withDefault: Schema.withConstructorDefault<Schema.Union<readonly [Schema.Date, Schema.Date]> & Schema.WithoutConstructorDefault>;
129
+ export declare const inputDate: S.Union<readonly [S.DateValid, DateFromString & {
130
+ withDefault: S.withConstructorDefault<DateFromString>;
131
+ withDecodingDefaultType: S.withDecodingDefaultType<DateFromString>;
132
+ }]> & {
133
+ withDefault: S.withConstructorDefault<S.Union<readonly [S.DateValid, DateFromString & {
134
+ withDefault: S.withConstructorDefault<DateFromString>;
135
+ withDecodingDefaultType: S.withDecodingDefaultType<DateFromString>;
136
+ }]>>;
137
+ withDecodingDefaultType: S.withDecodingDefaultType<S.Union<readonly [S.DateValid, DateFromString & {
138
+ withDefault: S.withConstructorDefault<DateFromString>;
139
+ withDecodingDefaultType: S.withDecodingDefaultType<DateFromString>;
140
+ }]>>;
82
141
  };
83
142
  export interface UnionBrand {
84
143
  }
@@ -89,9 +148,13 @@ export declare function makeExactOptional<NER extends S.Struct.Fields>(t: NER):
89
148
  [K in keyof NER]: NER[K] extends S.Top ? ReturnType<typeof S.optionalKey<NER[K] & S.Top>> : any;
90
149
  };
91
150
  /** A version of transform which is only a one way mapping of From->To */
92
- 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>;
151
+ 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>;
93
152
  /** A version of transformOrFail which is only a one way mapping of From->To */
94
- 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>;
95
- export declare const provide: <Self extends S.Top, R>(self: Self, context: ServiceMap.ServiceMap<R>) => any;
96
- export declare const contextFromServices: <Self extends S.Top, Tags extends readonly any[]>(_self: Self, ..._services: Tags) => any;
97
- //# sourceMappingURL=ext.d.ts.map
153
+ 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>;
154
+ export declare const provide: {
155
+ <R>(context: Context.Context<R>): <Self extends S.Top>(self: Self) => ProvidedCodec<Self, R>;
156
+ <Self extends S.Top, R>(self: Self, context: Context.Context<R>): ProvidedCodec<Self, R>;
157
+ };
158
+ export declare const contextFromServices: <Self extends S.Top, Tags extends ReadonlyArray<Context.Key<any, any>>>(self: Self, ...services: Tags) => Effect.Effect<ProvidedCodec<Self, Context.Service.Identifier<Tags[number]>>, never, Context.Service.Identifier<Tags[number]>>;
159
+ export {};
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL2V4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUEwQixLQUFLLFNBQVMsRUFBRSxXQUFXLEVBQXdCLE1BQU0sUUFBUSxDQUFBO0FBQzFHLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hELE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV0QyxLQUFLLGFBQWEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDckMsQ0FBQTtBQUVELGVBQU8sTUFBTSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsWUFBMkMsQ0FBQTtBQUV2RixLQUFLLFVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEtBQUssR0FBRyxDQUFBO0FBRXhGLGVBQU8sTUFBTSx1QkFBdUIsR0FBSSxNQUFNLFNBQVMsVUFBVSxVQUN2RCxNQUFNLHdCQUNPLFNBQVMsQ0FBQyxZQUFZLEtBQzFDLE1BSVcsQ0FBQTtBQVVkOzs7OztHQUtHO0FBQ0gsTUFBTSxXQUFXLGNBQWUsU0FBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUFHO0FBRXZFOzs7Ozs7Ozs7O0dBVUc7QUFDSCxlQUFPLE1BQU0sY0FBYyxFQUFFLGNBQXlGLENBQUE7QUFFdEg7O0dBRUc7QUFDSCxlQUFPLE1BQU0sSUFBSTs7O0NBR2YsQ0FBQTtBQUVGOztHQUVHO0FBQ0gsZUFBTyxNQUFNLFNBQVM7OztDQUdwQixDQUFBO0FBRUY7O0dBRUc7QUFDSCxlQUFPLE1BQU0sT0FBTzs7O0NBR2xCLENBQUE7QUFFRjs7O0dBR0c7QUFDSCxlQUFPLE1BQU0sTUFBTTs7O0NBR2pCLENBQUE7QUFFRjs7R0FFRztBQUNILGVBQU8sTUFBTSxNQUFNOzs7Q0FHakIsQ0FBQTtBQUVGOztHQUVHO0FBQ0gsZUFBTyxNQUFNLFFBQVEsR0FBSSxLQUFLLENBQUMsUUFBUSxTQUFTLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxRQUFRO29CQUtuRixDQUFDLFNBQVMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Ozs7O2FBUXhCLFFBQVEsQ0FBQyxDQUFDLENBQUM7OztDQUl4QyxDQUFBO0FBRUg7O0dBRUc7QUFDSCx3QkFBZ0IsS0FBSyxDQUFDLFdBQVcsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXOzs7RUFTbEU7QUFFRDs7R0FFRztBQUNILGVBQU8sTUFBTSxvQkFBb0IsR0FBSSxXQUFXLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxXQUFXLG9KQWVqRixDQUFBO0FBRUQ7O0dBRUc7QUFDSCxlQUFPLE1BQU0sb0JBQW9CLEdBQUksU0FBUyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVE7SUFDN0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUE7SUFDdkIsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUE7Q0FDNUIsdU9BcUJBLENBQUE7QUFFRDs7R0FFRztBQUNILGVBQU8sTUFBTSxXQUFXLEdBQUksV0FBVyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsV0FBVzs7O0NBVXRFLENBQUE7QUFFSDs7R0FFRztBQUNILGVBQU8sTUFBTSxXQUFXLEdBQUksU0FBUyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVE7SUFDcEYsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUE7SUFDdkIsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUE7Q0FDNUI7OztDQVFFLENBQUE7QUFFSDs7R0FFRztBQUNILGVBQU8sTUFBTSxNQUFNLEdBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVEsTUFBTTs7O0NBUXRELENBQUE7QUFFSCxlQUFPLE1BQU0sV0FBVyxHQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyx5QkFBeUIsVUFBVSxNQUFNLHFDQUNqQixDQUFBO0FBRTdFLGVBQU8sTUFBTSxXQUFXLEdBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixVQUFVLE1BQU0scUNBQ2hDLENBQUE7QUFFOUQsZUFBTyxNQUFNLGVBQWUsR0FBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMseUJBQXlCLFVBQVUsTUFBTSxxQ0FDckMsQ0FBQTtBQUU3RCxlQUFPLE1BQU0sWUFBWSxHQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyx5QkFBeUIsVUFBVSxNQUFNLHFDQUNqQyxDQUFBO0FBRTlELGVBQU8sTUFBTSxVQUFVLEdBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixVQUFVLE1BQU0scUNBQ3hCLENBQUE7QUFFckUsZUFBTyxNQUFNLFVBQVUsR0FBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMseUJBQXlCLFVBQVUsTUFBTSxxQ0FDeEIsQ0FBQTtBQUVyRSxlQUFPLE1BQU0sZUFBZSxHQUFJLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksOEJBTTFELENBQUE7QUFFRCxNQUFNLE1BQU0sWUFBWSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQzdDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ2xCLE9BQU8sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEtBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQWdCakIsZUFBTyxNQUFNLFNBQVM7Ozs7Ozs7Ozs7OztDQU1yQixDQUFBO0FBRUQsTUFBTSxXQUFXLFVBQVU7Q0FBRztBQUk5Qix3QkFBZ0IsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDdEQsQ0FBQyxFQUFFLEdBQUcsR0FDTDtLQUNBLENBQUMsSUFBSSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHO0NBQzdGLENBS0E7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUMzRCxDQUFDLEVBQUUsR0FBRyxHQUNMO0tBQ0EsQ0FBQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUc7Q0FDaEcsQ0FLQTtBQUVELHlFQUF5RTtBQUN6RSxlQUFPLE1BQU0sV0FBVyxHQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxRQUN4RCxJQUFJLE1BQ04sRUFBRSxVQUNFLENBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDbkIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEtBQzVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsdUNBZ0JqQixDQUFBO0FBRUgsK0VBQStFO0FBQy9FLGVBQU8sTUFBTSxpQkFBaUIsR0FBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQ2xFLElBQUksTUFDTixFQUFFLFVBQ0UsQ0FDTixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUNuQixPQUFPLEVBQUUsU0FBUyxDQUFDLFlBQVksS0FDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsb0NBZ0J2RCxDQUFBO0FBRUgsZUFBTyxNQUFNLE9BQU8sRUFBRTtJQUNwQixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7Q0FPeEYsQ0FBQTtBQUNGLGVBQU8sTUFBTSxtQkFBbUIsRUFRMUIsQ0FDSixJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFDbEIsSUFBSSxTQUFTLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUVqRCxJQUFJLEVBQUUsSUFBSSxFQUNWLEdBQUcsUUFBUSxFQUFFLElBQUksS0FDZCxNQUFNLENBQUMsTUFBTSxDQUNoQixhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQzdELEtBQUssRUFDTCxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDekMsQ0FBQSJ9