effect-app 4.0.0-beta.30 → 4.0.0-beta.301

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 (365) hide show
  1. package/CHANGELOG.md +1435 -0
  2. package/dist/Array.d.ts +2 -1
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +4 -4
  5. package/dist/Chunk.d.ts.map +1 -1
  6. package/dist/Config/SecretURL.d.ts +3 -1
  7. package/dist/Config/SecretURL.d.ts.map +1 -1
  8. package/dist/Config/SecretURL.js +3 -6
  9. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  10. package/dist/Config/internal/configSecretURL.js +2 -2
  11. package/dist/Config.d.ts +2 -0
  12. package/dist/Config.d.ts.map +1 -0
  13. package/dist/Config.js +8 -0
  14. package/dist/ConfigProvider.d.ts +2 -0
  15. package/dist/ConfigProvider.d.ts.map +1 -0
  16. package/dist/ConfigProvider.js +6 -0
  17. package/dist/{ServiceMap.d.ts → Context.d.ts} +18 -20
  18. package/dist/Context.d.ts.map +1 -0
  19. package/dist/Context.js +67 -0
  20. package/dist/DataDependencies.d.ts +388 -0
  21. package/dist/DataDependencies.d.ts.map +1 -0
  22. package/dist/DataDependencies.js +64 -0
  23. package/dist/Effect.d.ts +10 -9
  24. package/dist/Effect.d.ts.map +1 -1
  25. package/dist/Effect.js +5 -8
  26. package/dist/Emailer.d.ts +51 -0
  27. package/dist/Emailer.d.ts.map +1 -0
  28. package/dist/Emailer.js +7 -0
  29. package/dist/Function.d.ts.map +1 -1
  30. package/dist/Layer.d.ts +10 -6
  31. package/dist/Layer.d.ts.map +1 -1
  32. package/dist/Layer.js +3 -2
  33. package/dist/Model/Repository/Registry.d.ts +22 -0
  34. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  35. package/dist/Model/Repository/Registry.js +18 -0
  36. package/dist/Model/Repository/ext.d.ts +60 -0
  37. package/dist/Model/Repository/ext.d.ts.map +1 -0
  38. package/dist/Model/Repository/ext.js +122 -0
  39. package/dist/Model/Repository/internal/internal.d.ts +63 -0
  40. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  41. package/dist/Model/Repository/internal/internal.js +438 -0
  42. package/dist/Model/Repository/legacy.d.ts +21 -0
  43. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  44. package/dist/Model/Repository/legacy.js +2 -0
  45. package/dist/Model/Repository/makeRepo.d.ts +54 -0
  46. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  47. package/dist/Model/Repository/makeRepo.js +27 -0
  48. package/dist/Model/Repository/service.d.ts +121 -0
  49. package/dist/Model/Repository/service.d.ts.map +1 -0
  50. package/dist/Model/Repository/service.js +2 -0
  51. package/dist/Model/Repository/validation.d.ts +58 -0
  52. package/dist/Model/Repository/validation.d.ts.map +1 -0
  53. package/dist/Model/Repository/validation.js +32 -0
  54. package/dist/Model/Repository.d.ts +7 -0
  55. package/dist/Model/Repository.d.ts.map +1 -0
  56. package/dist/Model/Repository.js +7 -0
  57. package/dist/Model/dsl.d.ts +33 -0
  58. package/dist/Model/dsl.d.ts.map +1 -0
  59. package/dist/Model/dsl.js +43 -0
  60. package/dist/Model/filter/filterApi.d.ts +30 -0
  61. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  62. package/dist/Model/filter/filterApi.js +2 -0
  63. package/dist/Model/filter/types/errors.d.ts +29 -0
  64. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  65. package/dist/Model/filter/types/errors.js +2 -0
  66. package/dist/Model/filter/types/fields.d.ts +15 -0
  67. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  68. package/dist/Model/filter/types/fields.js +2 -0
  69. package/dist/Model/filter/types/path/common.d.ts +316 -0
  70. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  71. package/dist/Model/filter/types/path/common.js +2 -0
  72. package/dist/Model/filter/types/path/eager.d.ts +94 -0
  73. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  74. package/dist/Model/filter/types/path/eager.js +36 -0
  75. package/dist/Model/filter/types/path/index.d.ts +4 -0
  76. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  77. package/dist/Model/filter/types/path/index.js +3 -0
  78. package/dist/Model/filter/types/utils.d.ts +79 -0
  79. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  80. package/dist/Model/filter/types/utils.js +2 -0
  81. package/dist/Model/filter/types/validator.d.ts +30 -0
  82. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  83. package/dist/Model/filter/types/validator.js +2 -0
  84. package/dist/Model/filter/types.d.ts +5 -0
  85. package/dist/Model/filter/types.d.ts.map +1 -0
  86. package/dist/Model/filter/types.js +7 -0
  87. package/dist/Model/query/dsl.d.ts +514 -0
  88. package/dist/Model/query/dsl.d.ts.map +1 -0
  89. package/dist/Model/query/dsl.js +376 -0
  90. package/dist/Model/query/new-kid-interpreter.d.ts +132 -0
  91. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  92. package/dist/Model/query/new-kid-interpreter.js +361 -0
  93. package/dist/Model/query.d.ts +15 -0
  94. package/dist/Model/query.d.ts.map +1 -0
  95. package/dist/Model/query.js +3 -0
  96. package/dist/Model.d.ts +5 -0
  97. package/dist/Model.d.ts.map +1 -0
  98. package/dist/Model.js +5 -0
  99. package/dist/NonEmptySet.d.ts +3 -1
  100. package/dist/NonEmptySet.d.ts.map +1 -1
  101. package/dist/NonEmptySet.js +2 -2
  102. package/dist/Option.d.ts +1 -0
  103. package/dist/Option.d.ts.map +1 -1
  104. package/dist/Option.js +3 -1
  105. package/dist/Pure.d.ts +7 -5
  106. package/dist/Pure.d.ts.map +1 -1
  107. package/dist/Pure.js +7 -4
  108. package/dist/QueueMaker.d.ts +11 -0
  109. package/dist/QueueMaker.d.ts.map +1 -0
  110. package/dist/QueueMaker.js +11 -0
  111. package/dist/RequestContext.d.ts +87 -0
  112. package/dist/RequestContext.d.ts.map +1 -0
  113. package/dist/RequestContext.js +45 -0
  114. package/dist/RequestScopedDependencies.d.ts +21 -0
  115. package/dist/RequestScopedDependencies.d.ts.map +1 -0
  116. package/dist/RequestScopedDependencies.js +16 -0
  117. package/dist/Schema/Class.d.ts +188 -19
  118. package/dist/Schema/Class.d.ts.map +1 -1
  119. package/dist/Schema/Class.js +260 -17
  120. package/dist/Schema/FastCheck.d.ts.map +1 -1
  121. package/dist/Schema/SchemaParser.d.ts +5 -0
  122. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  123. package/dist/Schema/SchemaParser.js +6 -0
  124. package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
  125. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  126. package/dist/Schema/SpecialJsonSchema.js +118 -0
  127. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  128. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  129. package/dist/Schema/SpecialOpenApi.js +123 -0
  130. package/dist/Schema/brand.d.ts +4 -2
  131. package/dist/Schema/brand.d.ts.map +1 -1
  132. package/dist/Schema/brand.js +3 -1
  133. package/dist/Schema/email.d.ts.map +1 -1
  134. package/dist/Schema/email.js +7 -4
  135. package/dist/Schema/ext.d.ts +338 -55
  136. package/dist/Schema/ext.d.ts.map +1 -1
  137. package/dist/Schema/ext.js +358 -53
  138. package/dist/Schema/moreStrings.d.ts +82 -36
  139. package/dist/Schema/moreStrings.d.ts.map +1 -1
  140. package/dist/Schema/moreStrings.js +49 -42
  141. package/dist/Schema/numbers.d.ts +34 -21
  142. package/dist/Schema/numbers.d.ts.map +1 -1
  143. package/dist/Schema/numbers.js +55 -12
  144. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  145. package/dist/Schema/phoneNumber.js +6 -3
  146. package/dist/Schema/schema.d.ts +1 -1
  147. package/dist/Schema/schema.d.ts.map +1 -1
  148. package/dist/Schema/schema.js +2 -2
  149. package/dist/Schema/strings.d.ts +18 -4
  150. package/dist/Schema/strings.d.ts.map +1 -1
  151. package/dist/Schema/strings.js +1 -5
  152. package/dist/Schema.d.ts +222 -8
  153. package/dist/Schema.d.ts.map +1 -1
  154. package/dist/Schema.js +191 -12
  155. package/dist/SchemaAST.d.ts +2 -0
  156. package/dist/SchemaAST.d.ts.map +1 -0
  157. package/dist/SchemaAST.js +2 -0
  158. package/dist/Set.d.ts +4 -1
  159. package/dist/Set.d.ts.map +1 -1
  160. package/dist/Set.js +3 -2
  161. package/dist/Store.d.ts +163 -0
  162. package/dist/Store.d.ts.map +1 -0
  163. package/dist/Store.js +113 -0
  164. package/dist/_ext/Array.d.ts +1 -1
  165. package/dist/_ext/Array.d.ts.map +1 -1
  166. package/dist/_ext/Array.js +4 -2
  167. package/dist/_ext/misc.d.ts +4 -1
  168. package/dist/_ext/misc.d.ts.map +1 -1
  169. package/dist/_ext/misc.js +4 -2
  170. package/dist/_ext/ord.ext.d.ts +2 -1
  171. package/dist/_ext/ord.ext.d.ts.map +1 -1
  172. package/dist/_ext/ord.ext.js +2 -2
  173. package/dist/builtin.d.ts +2 -14
  174. package/dist/builtin.d.ts.map +1 -1
  175. package/dist/builtin.js +1 -1
  176. package/dist/client/InvalidationKeys.d.ts +30 -0
  177. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  178. package/dist/client/InvalidationKeys.js +37 -0
  179. package/dist/client/apiClientFactory.d.ts +19 -31
  180. package/dist/client/apiClientFactory.d.ts.map +1 -1
  181. package/dist/client/apiClientFactory.js +155 -35
  182. package/dist/client/clientFor.d.ts +54 -18
  183. package/dist/client/clientFor.d.ts.map +1 -1
  184. package/dist/client/clientFor.js +9 -1
  185. package/dist/client/errors.d.ts +82 -27
  186. package/dist/client/errors.d.ts.map +1 -1
  187. package/dist/client/errors.js +75 -19
  188. package/dist/client/makeClient.d.ts +490 -34
  189. package/dist/client/makeClient.d.ts.map +1 -1
  190. package/dist/client/makeClient.js +62 -28
  191. package/dist/client.d.ts +2 -0
  192. package/dist/client.d.ts.map +1 -1
  193. package/dist/client.js +3 -1
  194. package/dist/faker.d.ts.map +1 -1
  195. package/dist/http/Request.d.ts +1 -1
  196. package/dist/http/Request.d.ts.map +1 -1
  197. package/dist/http/Request.js +2 -2
  198. package/dist/ids.d.ts +42 -14
  199. package/dist/ids.d.ts.map +1 -1
  200. package/dist/ids.js +30 -5
  201. package/dist/index.d.ts +6 -7
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js +8 -8
  204. package/dist/middleware.d.ts +13 -7
  205. package/dist/middleware.d.ts.map +1 -1
  206. package/dist/middleware.js +14 -8
  207. package/dist/rpc/Invalidation.d.ts +3140 -0
  208. package/dist/rpc/Invalidation.d.ts.map +1 -0
  209. package/dist/rpc/Invalidation.js +178 -0
  210. package/dist/rpc/MiddlewareMaker.d.ts +11 -7
  211. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  212. package/dist/rpc/MiddlewareMaker.js +59 -38
  213. package/dist/rpc/RpcContextMap.d.ts +3 -3
  214. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  215. package/dist/rpc/RpcContextMap.js +4 -4
  216. package/dist/rpc/RpcMiddleware.d.ts +14 -10
  217. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  218. package/dist/rpc/RpcMiddleware.js +1 -1
  219. package/dist/rpc.d.ts +1 -1
  220. package/dist/rpc.d.ts.map +1 -1
  221. package/dist/rpc.js +2 -2
  222. package/dist/runtime.d.ts +19 -0
  223. package/dist/runtime.d.ts.map +1 -0
  224. package/dist/runtime.js +40 -0
  225. package/dist/setupRequest.d.ts +20 -0
  226. package/dist/setupRequest.d.ts.map +1 -0
  227. package/dist/setupRequest.js +72 -0
  228. package/dist/toast.d.ts +51 -0
  229. package/dist/toast.d.ts.map +1 -0
  230. package/dist/toast.js +34 -0
  231. package/dist/transform.d.ts +1 -1
  232. package/dist/transform.d.ts.map +1 -1
  233. package/dist/transform.js +4 -5
  234. package/dist/utils/effectify.d.ts +1 -1
  235. package/dist/utils/effectify.d.ts.map +1 -1
  236. package/dist/utils/effectify.js +2 -2
  237. package/dist/utils/extend.d.ts.map +1 -1
  238. package/dist/utils/gen.d.ts +4 -4
  239. package/dist/utils/gen.d.ts.map +1 -1
  240. package/dist/utils/logLevel.d.ts +2 -2
  241. package/dist/utils/logLevel.d.ts.map +1 -1
  242. package/dist/utils/logger.d.ts +4 -3
  243. package/dist/utils/logger.d.ts.map +1 -1
  244. package/dist/utils/logger.js +4 -4
  245. package/dist/utils.d.ts +34 -39
  246. package/dist/utils.d.ts.map +1 -1
  247. package/dist/utils.js +33 -37
  248. package/dist/validation/validators.d.ts.map +1 -1
  249. package/dist/validation.d.ts.map +1 -1
  250. package/dist/withToast.d.ts +30 -0
  251. package/dist/withToast.d.ts.map +1 -0
  252. package/dist/withToast.js +64 -0
  253. package/package.json +27 -251
  254. package/src/Array.ts +5 -5
  255. package/src/Chunk.ts +3 -3
  256. package/src/Config/SecretURL.ts +6 -3
  257. package/src/Config/internal/configSecretURL.ts +2 -2
  258. package/src/Config.ts +7 -0
  259. package/src/ConfigProvider.ts +5 -0
  260. package/src/{ServiceMap.ts → Context.ts} +56 -63
  261. package/src/DataDependencies.ts +114 -0
  262. package/src/Effect.ts +14 -16
  263. package/src/Emailer.ts +51 -0
  264. package/src/Inputify.type.ts +1 -1
  265. package/src/Layer.ts +11 -7
  266. package/src/Model/Repository/Registry.ts +35 -0
  267. package/src/Model/Repository/ext.ts +375 -0
  268. package/src/Model/Repository/internal/internal.ts +755 -0
  269. package/src/Model/Repository/legacy.ts +29 -0
  270. package/src/Model/Repository/makeRepo.ts +145 -0
  271. package/src/Model/Repository/service.ts +676 -0
  272. package/src/Model/Repository/validation.ts +31 -0
  273. package/src/Model/Repository.ts +6 -0
  274. package/src/Model/dsl.ts +129 -0
  275. package/src/Model/filter/filterApi.ts +60 -0
  276. package/src/Model/filter/types/errors.ts +47 -0
  277. package/src/Model/filter/types/fields.ts +50 -0
  278. package/src/Model/filter/types/path/common.ts +404 -0
  279. package/src/Model/filter/types/path/eager.ts +329 -0
  280. package/src/Model/filter/types/path/index.ts +4 -0
  281. package/src/Model/filter/types/utils.ts +128 -0
  282. package/src/Model/filter/types/validator.ts +46 -0
  283. package/src/Model/filter/types.ts +6 -0
  284. package/src/Model/query/dsl.ts +2770 -0
  285. package/src/Model/query/new-kid-interpreter.ts +526 -0
  286. package/src/Model/query.ts +13 -0
  287. package/src/Model.ts +4 -0
  288. package/src/NonEmptySet.ts +6 -4
  289. package/src/Option.ts +2 -0
  290. package/src/Pure.ts +10 -7
  291. package/src/QueueMaker.ts +11 -0
  292. package/src/RequestContext.ts +48 -0
  293. package/src/RequestScopedDependencies.ts +45 -0
  294. package/src/Schema/Class.ts +633 -59
  295. package/src/Schema/SchemaParser.ts +12 -0
  296. package/src/Schema/SpecialJsonSchema.ts +139 -0
  297. package/src/Schema/SpecialOpenApi.ts +130 -0
  298. package/src/Schema/brand.ts +22 -2
  299. package/src/Schema/email.ts +9 -4
  300. package/src/Schema/ext.ts +446 -91
  301. package/src/Schema/moreStrings.ts +147 -68
  302. package/src/Schema/numbers.ts +97 -28
  303. package/src/Schema/phoneNumber.ts +9 -5
  304. package/src/Schema/schema.ts +1 -1
  305. package/src/Schema/strings.ts +23 -14
  306. package/src/Schema.ts +397 -26
  307. package/src/SchemaAST.ts +1 -0
  308. package/src/Set.ts +6 -2
  309. package/src/Store.ts +273 -0
  310. package/src/_ext/Array.ts +4 -2
  311. package/src/_ext/misc.ts +4 -1
  312. package/src/_ext/ord.ext.ts +2 -1
  313. package/src/builtin-json.d.ts +24 -0
  314. package/src/builtin.ts +16 -21
  315. package/src/client/InvalidationKeys.ts +55 -0
  316. package/src/client/apiClientFactory.ts +299 -134
  317. package/src/client/clientFor.ts +107 -34
  318. package/src/client/errors.ts +100 -29
  319. package/src/client/makeClient.ts +594 -78
  320. package/src/client.ts +6 -4
  321. package/src/http/Request.ts +3 -3
  322. package/src/http.ts +1 -1
  323. package/src/ids.ts +33 -6
  324. package/src/index.ts +20 -23
  325. package/src/middleware.ts +13 -9
  326. package/src/rpc/Invalidation.ts +278 -0
  327. package/src/rpc/MiddlewareMaker.ts +88 -80
  328. package/src/rpc/README.md +2 -2
  329. package/src/rpc/RpcContextMap.ts +7 -6
  330. package/src/rpc/RpcMiddleware.ts +19 -13
  331. package/src/rpc.ts +4 -4
  332. package/src/runtime.ts +56 -0
  333. package/src/setupRequest.ts +138 -0
  334. package/src/toast.ts +54 -0
  335. package/src/transform.ts +4 -4
  336. package/src/utils/effectify.ts +1 -1
  337. package/src/utils/gen.ts +8 -8
  338. package/src/utils/logLevel.ts +1 -1
  339. package/src/utils/logger.ts +4 -3
  340. package/src/utils.ts +85 -158
  341. package/src/validation.ts +2 -2
  342. package/src/withToast.ts +133 -0
  343. package/test/dist/rpc.test.d.ts.map +1 -1
  344. package/test/dist/rpcMiddlewareContext.test.d.ts.map +1 -0
  345. package/test/dist/secretURL.test.d.ts.map +1 -0
  346. package/test/dist/special.test.d.ts.map +1 -0
  347. package/test/moreStrings.test.ts +1 -1
  348. package/test/rpc.test.ts +42 -13
  349. package/test/rpcMiddlewareContext.test.ts +63 -0
  350. package/test/schema.test.ts +459 -30
  351. package/test/secretURL.test.ts +160 -0
  352. package/test/special.test.ts +1258 -0
  353. package/test/utils.test.ts +7 -7
  354. package/tsconfig.base.json +6 -5
  355. package/tsconfig.json +3 -1
  356. package/tsconfig.src.json +29 -29
  357. package/tsconfig.test.json +2 -2
  358. package/dist/Operations.d.ts +0 -123
  359. package/dist/Operations.d.ts.map +0 -1
  360. package/dist/Operations.js +0 -29
  361. package/dist/ServiceMap.d.ts.map +0 -1
  362. package/dist/ServiceMap.js +0 -91
  363. package/eslint.config.mjs +0 -26
  364. package/src/Operations.ts +0 -55
  365. package/tsconfig.json.bak +0 -12
@@ -1,17 +1,20 @@
1
1
  import type * as B from "effect/Brand"
2
2
  import * as S from "effect/Schema"
3
3
  import type { Simplify } from "effect/Types"
4
- import { fromBrand, nominal } from "./brand.js"
5
- import { withDefaultMake } from "./ext.js"
4
+ import type * as SchemaAST from "../SchemaAST.ts"
5
+ import { type BrandedSchema, fromBrand, nominal } from "./brand.ts"
6
+ import { withDefaultMake } from "./ext.ts"
6
7
 
7
8
  export type NonEmptyStringBrand = B.Brand<"NonEmptyString">
8
9
  export type NonEmptyString = string & NonEmptyStringBrand
9
- export const NonEmptyString = S
10
+ export interface NonEmptyStringSchema extends BrandedSchema<S.NonEmptyString, NonEmptyString> {
11
+ (i: string, options?: SchemaAST.ParseOptions): NonEmptyString
12
+ }
13
+ export const NonEmptyString: NonEmptyStringSchema = S
10
14
  .NonEmptyString
11
15
  .pipe(
12
- fromBrand(nominal<NonEmptyString>(), {
16
+ fromBrand<NonEmptyString>(nominal<NonEmptyString>(), {
13
17
  identifier: "NonEmptyString",
14
- title: "NonEmptyString",
15
18
  jsonSchema: {}
16
19
  }),
17
20
  withDefaultMake
@@ -19,13 +22,15 @@ export const NonEmptyString = S
19
22
 
20
23
  export interface NonEmptyString64kBrand extends Simplify<B.Brand<"NonEmptyString64k"> & NonEmptyStringBrand> {}
21
24
  export type NonEmptyString64k = string & NonEmptyString64kBrand
22
- export const NonEmptyString64k = S
25
+ export interface NonEmptyString64kSchema extends BrandedSchema<S.NonEmptyString, NonEmptyString64k> {
26
+ (i: string, options?: SchemaAST.ParseOptions): NonEmptyString64k
27
+ }
28
+ export const NonEmptyString64k: NonEmptyString64kSchema = S
23
29
  .NonEmptyString
24
30
  .pipe(
25
31
  S.check(S.isMaxLength(64 * 1024)),
26
- fromBrand(nominal<NonEmptyString64k>(), {
32
+ fromBrand<NonEmptyString64k>(nominal<NonEmptyString64k>(), {
27
33
  identifier: "NonEmptyString64k",
28
- title: "NonEmptyString64k",
29
34
  jsonSchema: {}
30
35
  }),
31
36
  withDefaultMake
@@ -33,13 +38,15 @@ export const NonEmptyString64k = S
33
38
 
34
39
  export interface NonEmptyString2kBrand extends Simplify<B.Brand<"NonEmptyString2k"> & NonEmptyString64kBrand> {}
35
40
  export type NonEmptyString2k = string & NonEmptyString2kBrand
36
- export const NonEmptyString2k = S
41
+ export interface NonEmptyString2kSchema extends BrandedSchema<S.NonEmptyString, NonEmptyString2k> {
42
+ (i: string, options?: SchemaAST.ParseOptions): NonEmptyString2k
43
+ }
44
+ export const NonEmptyString2k: NonEmptyString2kSchema = S
37
45
  .NonEmptyString
38
46
  .pipe(
39
47
  S.check(S.isMaxLength(2 * 1024)),
40
- fromBrand(nominal<NonEmptyString2k>(), {
48
+ fromBrand<NonEmptyString2k>(nominal<NonEmptyString2k>(), {
41
49
  identifier: "NonEmptyString2k",
42
- title: "NonEmptyString2k",
43
50
  jsonSchema: {}
44
51
  }),
45
52
  withDefaultMake
@@ -47,13 +54,15 @@ export const NonEmptyString2k = S
47
54
 
48
55
  export interface NonEmptyString255Brand extends Simplify<B.Brand<"NonEmptyString255"> & NonEmptyString2kBrand> {}
49
56
  export type NonEmptyString255 = string & NonEmptyString255Brand
50
- export const NonEmptyString255 = S
57
+ export interface NonEmptyString255Schema extends BrandedSchema<S.NonEmptyString, NonEmptyString255> {
58
+ (i: string, options?: SchemaAST.ParseOptions): NonEmptyString255
59
+ }
60
+ export const NonEmptyString255: NonEmptyString255Schema = S
51
61
  .NonEmptyString
52
62
  .pipe(
53
63
  S.check(S.isMaxLength(255)),
54
- fromBrand(nominal<NonEmptyString255>(), {
64
+ fromBrand<NonEmptyString255>(nominal<NonEmptyString255>(), {
55
65
  identifier: "NonEmptyString255",
56
- title: "NonEmptyString255",
57
66
  jsonSchema: {}
58
67
  }),
59
68
  withDefaultMake
package/src/Schema.ts CHANGED
@@ -1,36 +1,344 @@
1
- import { SchemaAST, type Tracer } from "effect"
2
1
  import * as S from "effect/Schema"
3
- import type { NonEmptyReadonlyArray } from "./Array.js"
4
- import { fakerArb } from "./faker.js"
5
- import { Email as EmailT, type Email as EmailType } from "./Schema/email.js"
6
- import { withDefaultMake } from "./Schema/ext.js"
7
- import { PhoneNumber as PhoneNumberT, type PhoneNumber as PhoneNumberType } from "./Schema/phoneNumber.js"
8
- import { extendM } from "./utils.js"
2
+ import { type Simplify } from "effect/Struct"
3
+ import type * as Tracer from "effect/Tracer"
4
+ import type { RequiredKeys } from "effect/Types"
5
+ import type { NonEmptyReadonlyArray } from "./Array.ts"
6
+ import { fakerArb } from "./faker.ts"
7
+ import { Email as EmailT, type Email as EmailType } from "./Schema/email.ts"
8
+ import { concurrencyUnbounded, withDefaultMake, withDefaultParseOptions } from "./Schema/ext.ts"
9
+ import { PhoneNumber as PhoneNumberT, type PhoneNumber as PhoneNumberType } from "./Schema/phoneNumber.ts"
10
+ import { type AST } from "./Schema/schema.ts"
11
+ import * as SchemaAST from "./SchemaAST.ts"
12
+ import { copy, extendM, type StructuralCopyOrigin } from "./utils.ts"
13
+
14
+ // ---------------------------------------------------------------------------
15
+ // Default helpers — re-exported from effect/Schema
16
+ //
17
+ // The five helpers below are surfaced explicitly so the (important) policy
18
+ // around them lives next to the export. See also the file-level note in
19
+ // `./Schema/ext.ts` and the documented wrappers in
20
+ // `./Schema/ext.ts`, `./Schema/numbers.ts`, `./Schema/moreStrings.ts`,
21
+ // and `./ids.ts`.
22
+ //
23
+ // **Construction-only**: `withConstructorDefault` fills the field when it
24
+ // is omitted from `.make(...)` input. It is NOT applied during decode, so
25
+ // it CANNOT be used to just-in-time migrate database fields. A stored
26
+ // record missing the field will still fail to decode.
27
+ //
28
+ // **`withDecodingDefault*` is discouraged**: a missing field in persisted
29
+ // data is just as likely to be data corruption as it is an old-shape
30
+ // document; silently substituting a default hides the problem and can
31
+ // poison downstream aggregates. Prefer an explicit, preferably versioned
32
+ // migration of database data over shoving missing fields under the rug.
33
+ // ---------------------------------------------------------------------------
34
+
35
+ /**
36
+ * Attach a default value used **only** when constructing a value (e.g. via
37
+ * `.make(...)` or struct constructors) and the field is omitted from input.
38
+ *
39
+ * **Not applied during decode.** Decoding a payload that is missing the
40
+ * field will still raise a parse error. Do **not** rely on this to migrate
41
+ * database fields just-in-time — see the section header above.
42
+ *
43
+ * @see {@link withDecodingDefault} / {@link withDecodingDefaultType} —
44
+ * decode-time variants (discouraged for persisted data; use explicit,
45
+ * versioned migrations instead).
46
+ */
47
+ export { withConstructorDefault } from "effect/Schema"
48
+
49
+ /**
50
+ * Attach a default value used during decode when the field's `Encoded` value
51
+ * is missing **or** `undefined`. The default is specified as an `Encoded`
52
+ * value and threaded through the schema's decode step.
53
+ *
54
+ * **Discouraged for persisted data.** A missing field in a stored record is
55
+ * just as likely to be data corruption as it is an old-shape document;
56
+ * silently substituting a default hides the problem. Prefer an explicit,
57
+ * preferably versioned migration of database data — see the section header
58
+ * above.
59
+ *
60
+ * @see {@link withDecodingDefaultKey} — key-absent-only variant
61
+ * @see {@link withDecodingDefaultType} — `Type`-side variant
62
+ * @see {@link withConstructorDefault} — for `.make(...)`-time defaults
63
+ */
64
+ export { withDecodingDefault } from "effect/Schema"
65
+
66
+ /**
67
+ * Attach a default value used during decode when the field **key is absent**
68
+ * (note: not when present and `undefined`). The default is an `Encoded`
69
+ * value.
70
+ *
71
+ * **Discouraged for persisted data** — same reasoning as
72
+ * {@link withDecodingDefault}. Use explicit, preferably versioned migrations
73
+ * over decode-time fallbacks.
74
+ *
75
+ * @see {@link withDecodingDefault} — value-absent-or-undefined variant
76
+ * @see {@link withDecodingDefaultTypeKey} — `Type`-side variant
77
+ * @see {@link withConstructorDefault} — for `.make(...)`-time defaults
78
+ */
79
+ export { withDecodingDefaultKey } from "effect/Schema"
80
+
81
+ /**
82
+ * Attach a default value used during decode when the field is missing **or**
83
+ * `undefined`. The default is specified as a `Type` value (i.e. on the
84
+ * decoded side).
85
+ *
86
+ * **Discouraged for persisted data** — same reasoning as
87
+ * {@link withDecodingDefault}. Use explicit, preferably versioned migrations
88
+ * over decode-time fallbacks.
89
+ *
90
+ * @see {@link withDecodingDefault} — `Encoded`-side variant
91
+ * @see {@link withDecodingDefaultTypeKey} — key-absent-only variant
92
+ * @see {@link withConstructorDefault} — for `.make(...)`-time defaults
93
+ */
94
+ export { withDecodingDefaultType } from "effect/Schema"
95
+
96
+ /**
97
+ * Attach a default value used during decode when the field **key is absent**
98
+ * (note: not when present and `undefined`). The default is a `Type` value.
99
+ *
100
+ * **Discouraged for persisted data** — same reasoning as
101
+ * {@link withDecodingDefault}. Use explicit, preferably versioned migrations
102
+ * over decode-time fallbacks.
103
+ *
104
+ * @see {@link withDecodingDefaultKey} — `Encoded`-side variant
105
+ * @see {@link withDecodingDefaultType} — value-absent-or-undefined variant
106
+ * @see {@link withConstructorDefault} — for `.make(...)`-time defaults
107
+ */
108
+ export { withDecodingDefaultTypeKey } from "effect/Schema"
9
109
 
10
110
  export * from "effect/Schema"
11
- // v4: TaggedError renamed to TaggedErrorClass
12
- export { TaggedErrorClass as TaggedError } from "effect/Schema"
13
111
 
14
- export * from "./Schema/Class.js"
15
- export { Class, TaggedClass } from "./Schema/Class.js"
112
+ export * from "./Schema/Class.ts"
113
+ export { Class, ErrorClass, Opaque, OpaqueErrorFacadeClass, OpaqueFacade, OpaqueShape, OpaqueType, TaggedClass, TaggedErrorClass } from "./Schema/Class.ts"
16
114
 
17
- export { fromBrand, nominal } from "./Schema/brand.js"
18
- export { Array, Boolean, Date, Literal, Map, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js"
19
- export { Int, NonNegativeInt } from "./Schema/numbers.js"
115
+ export { fromBrand, nominal } from "./Schema/brand.ts"
116
+ export { Array, Boolean, Date, DateFromString, DateValid, Finite, Literals, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.ts"
117
+ export { Int, NonNegativeInt } from "./Schema/numbers.ts"
20
118
 
21
- export * from "./Schema/email.js"
22
- export * from "./Schema/ext.js"
23
- export * from "./Schema/moreStrings.js"
24
- export * from "./Schema/numbers.js"
25
- export * from "./Schema/phoneNumber.js"
26
- export * from "./Schema/schema.js"
27
- export * from "./Schema/strings.js"
28
- export { NonEmptyString } from "./Schema/strings.js"
119
+ export * from "./Schema/email.ts"
120
+ export * from "./Schema/ext.ts"
121
+ export * from "./Schema/moreStrings.ts"
122
+ export * from "./Schema/numbers.ts"
123
+ export * from "./Schema/phoneNumber.ts"
124
+ export * from "./Schema/schema.ts"
125
+ export * from "./Schema/SpecialJsonSchema.ts"
126
+ export * from "./Schema/SpecialOpenApi.ts"
127
+ export * from "./Schema/strings.ts"
128
+ export { NonEmptyString } from "./Schema/strings.ts"
29
129
 
30
130
  export * as SchemaIssue from "effect/SchemaIssue"
31
- export * as SchemaParser from "effect/SchemaParser"
32
131
 
33
- export { Void as Void_ } from "effect/Schema"
132
+ export const decodeEffectConcurrently: typeof S.decodeEffect = withDefaultParseOptions(S.decodeEffect)
133
+ export const decodeUnknownEffectConcurrently: typeof S.decodeUnknownEffect = withDefaultParseOptions(
134
+ S.decodeUnknownEffect
135
+ )
136
+ export * as SchemaParser from "./Schema/SchemaParser.ts"
137
+
138
+ /**
139
+ * Schema for a TypeScript `void` return value — the canonical `Void` used
140
+ * across the app, including RPC success schemas. Accepts **any present value**
141
+ * at runtime and discards it to `undefined`, while keeping the decoded/encoded
142
+ * type as `void`. Use `S.Undefined` when the input must be exactly `undefined`.
143
+ */
144
+ export interface Void extends S.Void {}
145
+ export const Void: Void = S.Void
146
+
147
+ // ---------------------------------------------------------------------------
148
+ // Struct / NonEmptyArray / Record
149
+ // ---------------------------------------------------------------------------
150
+
151
+ export function Struct<const Fields extends S.Struct.Fields>(
152
+ fields: Fields
153
+ ): Struct<Fields> {
154
+ const result = S.Struct(fields).annotate(concurrencyUnbounded)
155
+ const allowVoidMake = (schema: any): any => {
156
+ // Normalize omitted input to an empty object so optional/default-only structs can be constructed with make().
157
+ const origMake: any = schema.make
158
+ const origMakeOption: any = schema.makeOption
159
+ const origMakeEffect: any = schema.makeEffect
160
+ schema.make = function(this: any, input: any, options?: any) {
161
+ return origMake.call(this, input === undefined ? {} : input, options)
162
+ }
163
+ schema.makeOption = function(this: any, input: any, options?: any) {
164
+ return origMakeOption.call(this, input === undefined ? {} : input, options)
165
+ }
166
+ schema.makeEffect = function(this: any, input: any, options?: any) {
167
+ return origMakeEffect.call(this, input === undefined ? {} : input, options)
168
+ }
169
+ return schema
170
+ }
171
+ // eslint-disable-next-line @typescript-eslint/unbound-method, @typescript-eslint/no-unsafe-assignment
172
+ const origMapFields: any = result.mapFields
173
+ // eslint-disable-next-line @typescript-eslint/unbound-method, @typescript-eslint/no-unsafe-assignment
174
+ const origAnnotate: any = result.annotate
175
+ // eslint-disable-next-line @typescript-eslint/unbound-method, @typescript-eslint/no-unsafe-assignment
176
+ const origAnnotateKey: any = result.annotateKey
177
+
178
+ const preserveCopyAndMethods = (schema: any): any => {
179
+ schema.copy = copy
180
+ schema.mapFields = function(this: any, f: any, options?: any) {
181
+ return (result as any).mapFields.call(this, f, options)
182
+ }
183
+ schema.annotate = function(this: any, annotations?: any) {
184
+ return (result as any).annotate.call(this, annotations)
185
+ }
186
+ schema.annotateKey = function(this: any, annotations?: any) {
187
+ return (result as any).annotateKey.call(this, annotations)
188
+ }
189
+ return allowVoidMake(schema)
190
+ }
191
+ ;(result as any).mapFields = function(this: any, f: any, options?: any) {
192
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
193
+ const mapped = origMapFields.call(this, f, options).annotate(concurrencyUnbounded)
194
+ return preserveCopyAndMethods(mapped)
195
+ }
196
+ ;(result as any).annotate = function(this: any, annotations?: any) {
197
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
198
+ const annotated = origAnnotate.call(this, annotations)
199
+ return preserveCopyAndMethods(annotated)
200
+ }
201
+ ;(result as any).annotateKey = function(this: any, annotations?: any) {
202
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
203
+ const annotated = origAnnotateKey.call(this, annotations)
204
+ return preserveCopyAndMethods(annotated)
205
+ }
206
+ ;(result as any).copy = copy
207
+ allowVoidMake(result)
208
+ return result as Struct<Fields>
209
+ }
210
+
211
+ export interface Struct<Fields extends S.Struct.Fields> extends
212
+ S.Bottom<
213
+ Struct.Type<Fields>,
214
+ Struct.Encoded<Fields>,
215
+ Struct.DecodingServices<Fields>,
216
+ Struct.EncodingServices<Fields>,
217
+ AST.Objects,
218
+ // Rebuild is what's returned from annotate etc
219
+ Struct<Fields>,
220
+ Struct.MakeIn<Fields>,
221
+ Struct.Iso<Fields>
222
+ >
223
+ {
224
+ /**
225
+ * The field definitions of this struct. Spread them into a new struct to
226
+ * reuse fields across schemas.
227
+ *
228
+ * **Example** (Reusing fields across structs)
229
+ *
230
+ * ```ts
231
+ * import * as Schema from "effect/Schema"
232
+ *
233
+ * const Timestamped = Schema.Struct({
234
+ * createdAt: Schema.Date,
235
+ * updatedAt: Schema.Date
236
+ * })
237
+ *
238
+ * const User = Schema.Struct({
239
+ * ...Timestamped.fields,
240
+ * name: Schema.String,
241
+ * email: Schema.String
242
+ * })
243
+ * ```
244
+ */
245
+ readonly fields: Fields
246
+ /**
247
+ * Returns a new struct with the fields modified by the provided function.
248
+ *
249
+ * **Options**
250
+ *
251
+ * - `unsafePreserveChecks` - if `true`, keep any `.check(...)` constraints
252
+ * that were attached to the original union. Defaults to `false`.
253
+ *
254
+ * **Warning**: This is an unsafe operation. Since `mapFields`
255
+ * transformations change the schema type, the original refinement functions
256
+ * may no longer be valid or safe to apply to the transformed schema. Only
257
+ * use this option if you have verified that your refinements remain correct
258
+ * after the transformation.
259
+ */
260
+ mapFields<To extends Struct.Fields>(
261
+ f: (fields: Fields) => To,
262
+ options?: {
263
+ readonly unsafePreserveChecks?: boolean | undefined
264
+ } | undefined
265
+ ): Struct<Simplify<Readonly<To>>>
266
+
267
+ // added copy
268
+ readonly copy: StructuralCopyOrigin<Struct.Type<Fields>>
269
+ }
270
+
271
+ export declare namespace Struct {
272
+ export type Fields = S.Struct.Fields
273
+ export type Type<F extends S.Struct.Fields> = S.Struct.Type<F>
274
+ export type Encoded<F extends S.Struct.Fields> = S.Struct.Encoded<F>
275
+ export type DecodingServices<F extends S.Struct.Fields> = S.Struct.DecodingServices<F>
276
+ export type EncodingServices<F extends S.Struct.Fields> = S.Struct.EncodingServices<F>
277
+ // changed; all optional allows void
278
+ export type MakeIn<F extends S.Struct.Fields> = RequiredKeys<S.Struct.MakeIn<F>> extends never
279
+ ? void | S.Struct.MakeIn<F>
280
+ : S.Struct.MakeIn<F>
281
+ export type Iso<F extends S.Struct.Fields> = S.Struct.Iso<F>
282
+ }
283
+
284
+ export type StructNestedEncodedError<T> = {
285
+ readonly _tag: "StructNestedEncodedError"
286
+ readonly message: "Expected a Struct schema or a schema with from.Encoded"
287
+ readonly schema: T
288
+ }
289
+
290
+ export type StructNestedEncoded<T> = T extends { fields: infer Fields extends S.Struct.Fields } ? Struct.Encoded<Fields>
291
+ : T extends { readonly from: { readonly Encoded: infer Encoded } } ? Encoded
292
+ : StructNestedEncodedError<T>
293
+
294
+ export function NonEmptyArray<Value extends S.Top>(value: Value): S.NonEmptyArray<Value> {
295
+ return S.NonEmptyArray(value).annotate(concurrencyUnbounded)
296
+ }
297
+
298
+ export function TaggedStruct<const Tag extends SchemaAST.LiteralValue, const Fields extends S.Struct.Fields>(
299
+ value: Tag,
300
+ fields: Fields
301
+ ): TaggedStruct<Tag, Fields> {
302
+ return Struct({ _tag: S.tag(value), ...fields }) as any
303
+ }
304
+ export interface TaggedStruct<Tag extends SchemaAST.LiteralValue, Fields extends S.Struct.Fields>
305
+ extends Struct<{ readonly _tag: S.tag<Tag> } & Fields>
306
+ {}
307
+ export declare namespace TaggedStruct {
308
+ export type Fields = S.Struct.Fields
309
+ export type Type<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> = S.Struct.Type<
310
+ { readonly _tag: S.tag<Tag> } & F
311
+ >
312
+ export type Encoded<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> = S.Struct.Encoded<
313
+ { readonly _tag: S.tag<Tag> } & F
314
+ >
315
+ export type DecodingServices<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> =
316
+ S.Struct.DecodingServices<
317
+ { readonly _tag: S.tag<Tag> } & F
318
+ >
319
+ export type EncodingServices<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> =
320
+ S.Struct.EncodingServices<
321
+ { readonly _tag: S.tag<Tag> } & F
322
+ >
323
+ export type MakeIn<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> = S.Struct.MakeIn<
324
+ { readonly _tag: S.tag<Tag> } & F
325
+ >
326
+ export type Iso<Tag extends SchemaAST.LiteralValue, F extends S.Struct.Fields> = S.Struct.Iso<
327
+ { readonly _tag: S.tag<Tag> } & F
328
+ >
329
+ }
330
+
331
+ export function Record<Key extends S.Record.Key, Value extends S.Top>(
332
+ key: Key,
333
+ value: Value
334
+ ): S.$Record<Key, Value> {
335
+ return S.Record(key, value).annotate(concurrencyUnbounded)
336
+ }
337
+ export declare namespace Record {
338
+ export type Key = S.Record.Key
339
+ export type Type<K extends S.Record.Key, V extends S.Top> = S.Record.Type<K, V>
340
+ export type Encoded<K extends S.Record.Key, V extends S.Top> = S.Record.Encoded<K, V>
341
+ }
34
342
 
35
343
  export const SpanId = Symbol()
36
344
  export type SpanId = typeof SpanId
@@ -125,13 +433,76 @@ type TaggedUnionTags<Members extends TaggedUnionMembers> = S.Literals<
125
433
  }
126
434
  >
127
435
 
436
+ type TaggedPropertyKeys<A, Members extends TaggedUnionMembers> = {
437
+ [K in keyof A & string]: A[K] extends Members[number]["Type"] ? K : never
438
+ }[keyof A & string]
439
+
440
+ type PropertyGuardsFor<
441
+ Members extends TaggedUnionMembers,
442
+ K extends string,
443
+ A
444
+ > =
445
+ & {
446
+ readonly [M in Members[number] as `is${M["Type"]["_tag"]}`]: (
447
+ target: A
448
+ ) => target is A & { readonly [P in K]: M["Type"] }
449
+ }
450
+ & {
451
+ readonly isAnyOf: <const Tags extends ReadonlyArray<Members[number]["Type"]["_tag"]>>(
452
+ tags: Tags
453
+ ) => (
454
+ target: A
455
+ ) => target is A & { readonly [P in K]: Extract<Members[number]["Type"], { readonly _tag: Tags[number] }> }
456
+ }
457
+
458
+ type PropertyGuards<
459
+ Members extends TaggedUnionMembers,
460
+ K extends string
461
+ > =
462
+ & {
463
+ readonly [M in Members[number] as `is${M["Type"]["_tag"]}`]: <
464
+ T extends { readonly [P in K]: Members[number]["Type"] }
465
+ >(target: T) => target is T & { readonly [P in K]: M["Type"] }
466
+ }
467
+ & {
468
+ readonly isAnyOf: <const Tags extends ReadonlyArray<Members[number]["Type"]["_tag"]>>(
469
+ tags: Tags
470
+ ) => <T extends { readonly [P in K]: Members[number]["Type"] }>(
471
+ target: T
472
+ ) => target is T & { readonly [P in K]: Extract<Members[number]["Type"], { readonly _tag: Tags[number] }> }
473
+ }
474
+
128
475
  type TaggedUnionWithTags<Members extends TaggedUnionMembers> = S.toTaggedUnion<"_tag", Members> & {
129
476
  readonly tags: TaggedUnionTags<Members>
477
+ readonly generateGuards: <K extends string>(property: K) => PropertyGuards<Members, K>
478
+ readonly generateGuardsFor: <A>() => <K extends TaggedPropertyKeys<A, Members>>(
479
+ property: K
480
+ ) => PropertyGuardsFor<Members, K, A>
130
481
  }
131
482
 
132
483
  const extendTaggedUnionWithTags = <Members extends TaggedUnionMembers>(
133
484
  schema: S.Union<Members>
134
- ): TaggedUnionWithTags<Members> => extendM(schema.pipe(S.toTaggedUnion("_tag")), () => ({ tags: tags(schema.members) }))
485
+ ): TaggedUnionWithTags<Members> =>
486
+ extendM(schema.pipe(S.toTaggedUnion("_tag")), (tagged) => {
487
+ const makeGuards = (property: string) => {
488
+ const result: any = {}
489
+ const guards: Record<string, (u: unknown) => boolean> = tagged.guards
490
+ for (const tag of Object.keys(guards)) {
491
+ const guard = guards[tag]!
492
+ result[`is${tag}`] = (target: any) => guard(target[property])
493
+ }
494
+ result.isAnyOf = (memberTags: Array<string>) => {
495
+ const check = tagged.isAnyOf(memberTags)
496
+ return (target: any) => check(target[property])
497
+ }
498
+ return result
499
+ }
500
+ return {
501
+ tags: tags(schema.members),
502
+ generateGuards: makeGuards,
503
+ generateGuardsFor: () => makeGuards
504
+ }
505
+ })
135
506
 
136
507
  export const ExtendTaggedUnion = <Members extends TaggedUnionMembers>(
137
508
  schema: S.Union<Members>
@@ -139,4 +510,4 @@ export const ExtendTaggedUnion = <Members extends TaggedUnionMembers>(
139
510
 
140
511
  export const TaggedUnion = <
141
512
  Members extends TaggedUnionMembers
142
- >(...a: Members): TaggedUnionWithTags<Members> => extendTaggedUnionWithTags(S.Union(a))
513
+ >(members: Members): TaggedUnionWithTags<Members> => extendTaggedUnionWithTags(S.Union(members))
@@ -0,0 +1 @@
1
+ export * from "effect/SchemaAST"
package/src/Set.ts CHANGED
@@ -1,8 +1,12 @@
1
1
  // ets_tracing: off
2
2
 
3
- import { Array, type Equivalence, Option, type Order, type Result } from "effect"
3
+ import * as Array from "effect/Array"
4
+ import type * as Equivalence from "effect/Equivalence"
5
+ import * as Option from "effect/Option"
6
+ import type * as Order from "effect/Order"
4
7
  import { not } from "effect/Predicate"
5
- import { identity, pipe, type Predicate, type Refinement, tuple } from "./Function.js"
8
+ import type * as Result from "effect/Result"
9
+ import { identity, pipe, type Predicate, type Refinement, tuple } from "./Function.ts"
6
10
 
7
11
  export function find_<A, B extends A>(
8
12
  as: ReadonlySet<A>,