effect-app 4.0.0-beta.22 → 4.0.0-beta.220

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 (219) hide show
  1. package/CHANGELOG.md +986 -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 +7 -6
  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/Option.d.ts +1 -1
  31. package/dist/Option.d.ts.map +1 -1
  32. package/dist/Pure.d.ts +5 -5
  33. package/dist/Pure.d.ts.map +1 -1
  34. package/dist/Pure.js +13 -13
  35. package/dist/Schema/Class.d.ts +66 -20
  36. package/dist/Schema/Class.d.ts.map +1 -1
  37. package/dist/Schema/Class.js +189 -22
  38. package/dist/Schema/FastCheck.d.ts +1 -1
  39. package/dist/Schema/FastCheck.d.ts.map +1 -1
  40. package/dist/Schema/Methods.d.ts +1 -1
  41. package/dist/Schema/SchemaParser.d.ts +5 -0
  42. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  43. package/dist/Schema/SchemaParser.js +6 -0
  44. package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
  45. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  46. package/dist/Schema/SpecialJsonSchema.js +122 -0
  47. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  48. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  49. package/dist/Schema/SpecialOpenApi.js +123 -0
  50. package/dist/Schema/brand.d.ts +4 -2
  51. package/dist/Schema/brand.d.ts.map +1 -1
  52. package/dist/Schema/brand.js +1 -1
  53. package/dist/Schema/email.d.ts +1 -1
  54. package/dist/Schema/email.d.ts.map +1 -1
  55. package/dist/Schema/email.js +7 -4
  56. package/dist/Schema/ext.d.ts +367 -56
  57. package/dist/Schema/ext.d.ts.map +1 -1
  58. package/dist/Schema/ext.js +345 -53
  59. package/dist/Schema/moreStrings.d.ts +108 -26
  60. package/dist/Schema/moreStrings.d.ts.map +1 -1
  61. package/dist/Schema/moreStrings.js +54 -16
  62. package/dist/Schema/numbers.d.ts +55 -15
  63. package/dist/Schema/numbers.d.ts.map +1 -1
  64. package/dist/Schema/numbers.js +60 -12
  65. package/dist/Schema/phoneNumber.d.ts +1 -1
  66. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  67. package/dist/Schema/phoneNumber.js +6 -3
  68. package/dist/Schema/schema.d.ts +1 -1
  69. package/dist/Schema/strings.d.ts +5 -5
  70. package/dist/Schema/strings.d.ts.map +1 -1
  71. package/dist/Schema/strings.js +1 -5
  72. package/dist/Schema.d.ts +217 -15
  73. package/dist/Schema.d.ts.map +1 -1
  74. package/dist/Schema.js +221 -16
  75. package/dist/Set.d.ts +1 -1
  76. package/dist/Set.d.ts.map +1 -1
  77. package/dist/TypeTest.d.ts +1 -1
  78. package/dist/Types.d.ts +1 -1
  79. package/dist/Widen.type.d.ts +1 -1
  80. package/dist/_ext/Array.d.ts +1 -1
  81. package/dist/_ext/Array.d.ts.map +1 -1
  82. package/dist/_ext/date.d.ts +1 -1
  83. package/dist/_ext/misc.d.ts +1 -1
  84. package/dist/_ext/ord.ext.d.ts +1 -1
  85. package/dist/_ext/ord.ext.d.ts.map +1 -1
  86. package/dist/builtin.d.ts +1 -1
  87. package/dist/builtin.d.ts.map +1 -1
  88. package/dist/client/InvalidationKeys.d.ts +29 -0
  89. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  90. package/dist/client/InvalidationKeys.js +33 -0
  91. package/dist/client/apiClientFactory.d.ts +20 -32
  92. package/dist/client/apiClientFactory.d.ts.map +1 -1
  93. package/dist/client/apiClientFactory.js +96 -33
  94. package/dist/client/clientFor.d.ts +51 -17
  95. package/dist/client/clientFor.d.ts.map +1 -1
  96. package/dist/client/clientFor.js +9 -1
  97. package/dist/client/errors.d.ts +49 -25
  98. package/dist/client/errors.d.ts.map +1 -1
  99. package/dist/client/errors.js +43 -17
  100. package/dist/client/makeClient.d.ts +481 -33
  101. package/dist/client/makeClient.d.ts.map +1 -1
  102. package/dist/client/makeClient.js +66 -24
  103. package/dist/client.d.ts +2 -1
  104. package/dist/client.d.ts.map +1 -1
  105. package/dist/client.js +2 -1
  106. package/dist/faker.d.ts +1 -1
  107. package/dist/faker.d.ts.map +1 -1
  108. package/dist/http/Request.d.ts +2 -2
  109. package/dist/http/Request.d.ts.map +1 -1
  110. package/dist/http/internal/lib.d.ts +1 -1
  111. package/dist/http.d.ts +1 -1
  112. package/dist/ids.d.ts +40 -12
  113. package/dist/ids.d.ts.map +1 -1
  114. package/dist/ids.js +25 -3
  115. package/dist/index.d.ts +5 -8
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +6 -8
  118. package/dist/logger.d.ts +1 -1
  119. package/dist/middleware.d.ts +14 -8
  120. package/dist/middleware.d.ts.map +1 -1
  121. package/dist/middleware.js +14 -8
  122. package/dist/rpc/Invalidation.d.ts +402 -0
  123. package/dist/rpc/Invalidation.d.ts.map +1 -0
  124. package/dist/rpc/Invalidation.js +150 -0
  125. package/dist/rpc/MiddlewareMaker.d.ts +5 -4
  126. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  127. package/dist/rpc/MiddlewareMaker.js +57 -37
  128. package/dist/rpc/RpcContextMap.d.ts +3 -3
  129. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  130. package/dist/rpc/RpcContextMap.js +4 -4
  131. package/dist/rpc/RpcMiddleware.d.ts +5 -4
  132. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  133. package/dist/rpc/RpcMiddleware.js +1 -1
  134. package/dist/rpc.d.ts +2 -2
  135. package/dist/rpc.d.ts.map +1 -1
  136. package/dist/rpc.js +2 -2
  137. package/dist/transform.d.ts +1 -1
  138. package/dist/transform.d.ts.map +1 -1
  139. package/dist/transform.js +3 -3
  140. package/dist/utils/effectify.d.ts +1 -1
  141. package/dist/utils/extend.d.ts +1 -1
  142. package/dist/utils/extend.d.ts.map +1 -1
  143. package/dist/utils/gen.d.ts +2 -2
  144. package/dist/utils/gen.d.ts.map +1 -1
  145. package/dist/utils/logLevel.d.ts +2 -2
  146. package/dist/utils/logLevel.d.ts.map +1 -1
  147. package/dist/utils/logger.d.ts +3 -3
  148. package/dist/utils/logger.d.ts.map +1 -1
  149. package/dist/utils/logger.js +3 -3
  150. package/dist/utils.d.ts +31 -38
  151. package/dist/utils.d.ts.map +1 -1
  152. package/dist/utils.js +12 -25
  153. package/dist/validation/validators.d.ts +1 -1
  154. package/dist/validation/validators.d.ts.map +1 -1
  155. package/dist/validation.d.ts +1 -1
  156. package/dist/validation.d.ts.map +1 -1
  157. package/package.json +46 -24
  158. package/src/Config/SecretURL.ts +2 -1
  159. package/src/Config.ts +14 -0
  160. package/src/ConfigProvider.ts +48 -0
  161. package/src/{ServiceMap.ts → Context.ts} +52 -59
  162. package/src/Effect.ts +12 -14
  163. package/src/Layer.ts +6 -5
  164. package/src/Pure.ts +17 -18
  165. package/src/Schema/Class.ts +270 -64
  166. package/src/Schema/SchemaParser.ts +12 -0
  167. package/src/Schema/SpecialJsonSchema.ts +137 -0
  168. package/src/Schema/SpecialOpenApi.ts +130 -0
  169. package/src/Schema/brand.ts +21 -1
  170. package/src/Schema/email.ts +7 -2
  171. package/src/Schema/ext.ts +425 -88
  172. package/src/Schema/moreStrings.ts +92 -37
  173. package/src/Schema/numbers.ts +64 -16
  174. package/src/Schema/phoneNumber.ts +5 -1
  175. package/src/Schema/strings.ts +4 -8
  176. package/src/Schema.ts +410 -20
  177. package/src/client/InvalidationKeys.ts +50 -0
  178. package/src/client/apiClientFactory.ts +224 -130
  179. package/src/client/clientFor.ts +95 -29
  180. package/src/client/errors.ts +52 -26
  181. package/src/client/makeClient.ts +572 -71
  182. package/src/client.ts +1 -0
  183. package/src/ids.ts +25 -3
  184. package/src/index.ts +5 -10
  185. package/src/middleware.ts +13 -9
  186. package/src/rpc/Invalidation.ts +226 -0
  187. package/src/rpc/MiddlewareMaker.ts +65 -60
  188. package/src/rpc/README.md +2 -2
  189. package/src/rpc/RpcContextMap.ts +6 -5
  190. package/src/rpc/RpcMiddleware.ts +5 -4
  191. package/src/rpc.ts +1 -1
  192. package/src/transform.ts +2 -2
  193. package/src/utils/gen.ts +1 -1
  194. package/src/utils/logger.ts +2 -2
  195. package/src/utils.ts +50 -132
  196. package/test/dist/rpc.test.d.ts.map +1 -1
  197. package/test/dist/secretURL.test.d.ts.map +1 -0
  198. package/test/dist/special.test.d.ts.map +1 -0
  199. package/test/dist/stream-error.types.d.ts +2 -0
  200. package/test/dist/stream-error.types.d.ts.map +1 -0
  201. package/test/dist/stream-error.types.js +27 -0
  202. package/test/rpc.test.ts +45 -6
  203. package/test/schema.test.ts +583 -9
  204. package/test/secretURL.test.ts +157 -0
  205. package/test/special.test.ts +1023 -0
  206. package/test/utils.test.ts +6 -6
  207. package/tsconfig.base.json +3 -4
  208. package/tsconfig.json +0 -1
  209. package/tsconfig.json.bak +2 -2
  210. package/tsconfig.src.json +29 -29
  211. package/tsconfig.test.json +2 -2
  212. package/dist/Operations.d.ts +0 -123
  213. package/dist/Operations.d.ts.map +0 -1
  214. package/dist/Operations.js +0 -29
  215. package/dist/ServiceMap.d.ts +0 -44
  216. package/dist/ServiceMap.d.ts.map +0 -1
  217. package/dist/ServiceMap.js +0 -91
  218. package/eslint.config.mjs +0 -26
  219. package/src/Operations.ts +0 -55
@@ -15,7 +15,7 @@ export type NonEmptyString50 = string & NonEmptyString50Brand;
15
15
  /**
16
16
  * A string that is at least 1 character long and a maximum of 50.
17
17
  */
18
- export declare const NonEmptyString50: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100">;
18
+ export declare const NonEmptyString50: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString50>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString50>;
19
19
  /**
20
20
  * A string that is at least 1 character long and a maximum of 64.
21
21
  */
@@ -28,7 +28,7 @@ export type NonEmptyString64 = string & NonEmptyString64Brand;
28
28
  /**
29
29
  * A string that is at least 1 character long and a maximum of 64.
30
30
  */
31
- export declare const NonEmptyString64: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100">;
31
+ export declare const NonEmptyString64: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString64>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString64>;
32
32
  /**
33
33
  * A string that is at least 1 character long and a maximum of 80.
34
34
  */
@@ -41,7 +41,7 @@ export type NonEmptyString80 = string & NonEmptyString80Brand;
41
41
  /**
42
42
  * A string that is at least 1 character long and a maximum of 80.
43
43
  */
44
- export declare const NonEmptyString80: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString80" | "NonEmptyString100">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString80" | "NonEmptyString100">;
44
+ export declare const NonEmptyString80: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString80>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString80>;
45
45
  /**
46
46
  * A string that is at least 1 character long and a maximum of 100.
47
47
  */
@@ -54,7 +54,7 @@ export type NonEmptyString100 = string & NonEmptyString100Brand;
54
54
  /**
55
55
  * A string that is at least 1 character long and a maximum of 100.
56
56
  */
57
- export declare const NonEmptyString100: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString100">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString100">;
57
+ export declare const NonEmptyString100: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString100>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString100>;
58
58
  /**
59
59
  * A string that is at least 3 character long and a maximum of 255.
60
60
  */
@@ -67,7 +67,7 @@ export type Min3String255 = string & Min3String255Brand;
67
67
  /**
68
68
  * A string that is at least 3 character long and a maximum of 255.
69
69
  */
70
- export declare const Min3String255: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "Min3String255">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "Min3String255">;
70
+ export declare const Min3String255: WithDefaults<import("./brand.js").BrandedSchema<S.String, Min3String255>> & import("./brand.js").BrandedSchema<S.String, Min3String255>;
71
71
  /**
72
72
  * A string that is at least 6 characters long and a maximum of 50.
73
73
  */
@@ -79,31 +79,113 @@ export interface StringIdBrand extends Simplify<B.Brand<"StringId"> & NonEmptySt
79
79
  export type StringId = string & StringIdBrand;
80
80
  /**
81
81
  * A string that is at least 6 characters long and a maximum of 50.
82
- */
83
- export declare const StringId: WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "StringId"> & {
84
- make: () => StringId;
85
- withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "StringId"> & S.WithoutConstructorDefault>;
86
- }> & S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "StringId"> & {
87
- make: () => StringId;
88
- withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "StringId"> & S.WithoutConstructorDefault>;
82
+ *
83
+ * `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
84
+ * applied during decode — see file-level note).
85
+ */
86
+ export declare const StringId: WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
87
+ make: (s?: string) => StringId;
88
+ /**
89
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
90
+ * only when the field is omitted from `.make(...)` input. NOT applied
91
+ * during decode — cannot be used to JIT-migrate database fields. See
92
+ * file-level note.
93
+ */
94
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
95
+ }> & import("./brand.js").BrandedSchema<S.String, StringId> & {
96
+ make: (s?: string) => StringId;
97
+ /**
98
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
99
+ * only when the field is omitted from `.make(...)` input. NOT applied
100
+ * during decode — cannot be used to JIT-migrate database fields. See
101
+ * file-level note.
102
+ */
103
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
89
104
  };
90
- export declare function prefixedStringId<Brand extends StringId>(): <Prefix extends string, Separator extends string = "-">(prefix: Prefix, name: string, separator?: Separator) => WithDefaults<S.Codec<string & Brand, string, never, never>> & S.Codec<string & Brand, string, never, never> & PrefixedStringUtils<Brand, Prefix, Separator>;
91
- export declare const brandedStringId: <Brand extends StringIdBrand>() => WithDefaults<S.Codec<string & Brand, string, never, never> & {
92
- make: () => string & Brand;
93
- withDefault: S.withConstructorDefault<S.Codec<string & Brand, string> & S.WithoutConstructorDefault>;
94
- } & WithDefaults<S.Codec<string & Brand, string, never, never>>> & S.Codec<string & Brand, string, never, never> & {
95
- make: () => string & Brand;
96
- withDefault: S.withConstructorDefault<S.Codec<string & Brand, string> & S.WithoutConstructorDefault>;
97
- } & WithDefaults<S.Codec<string & Brand, string, never, never>>;
98
- export interface PrefixedStringUtils<Brand extends StringId, Prefix extends string, Separator extends string> {
99
- readonly make: () => Brand;
100
- readonly unsafeFrom: (str: string) => Brand;
101
- prefixSafe: <REST extends string>(str: `${Prefix}${Separator}${REST}`) => Brand;
105
+ /**
106
+ * Build a `StringId` schema whose values are required to start with a fixed
107
+ * `prefix` (joined with `separator`, default `-`).
108
+ *
109
+ * The returned schema exposes `.withConstructorDefault` that mints a fresh
110
+ * prefixed id. Construction-only — not applied during decode; see file-level
111
+ * note.
112
+ */
113
+ export declare function prefixedStringId<Type extends StringId>(): <Prefix extends string, Separator extends string = "-">(prefix: Prefix, name: string, separator?: Separator) => WithDefaults<S.refine<Type, WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
114
+ make: (s?: string) => StringId;
115
+ /**
116
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
117
+ * only when the field is omitted from `.make(...)` input. NOT applied
118
+ * during decode — cannot be used to JIT-migrate database fields. See
119
+ * file-level note.
120
+ */
121
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
122
+ }> & import("./brand.js").BrandedSchema<S.String, StringId> & {
123
+ make: (s?: string) => StringId;
124
+ /**
125
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
126
+ * only when the field is omitted from `.make(...)` input. NOT applied
127
+ * during decode — cannot be used to JIT-migrate database fields. See
128
+ * file-level note.
129
+ */
130
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
131
+ }>> & S.refine<Type, WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
132
+ make: (s?: string) => StringId;
133
+ /**
134
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
135
+ * only when the field is omitted from `.make(...)` input. NOT applied
136
+ * during decode — cannot be used to JIT-migrate database fields. See
137
+ * file-level note.
138
+ */
139
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
140
+ }> & import("./brand.js").BrandedSchema<S.String, StringId> & {
141
+ make: (s?: string) => StringId;
142
+ /**
143
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
144
+ * only when the field is omitted from `.make(...)` input. NOT applied
145
+ * during decode — cannot be used to JIT-migrate database fields. See
146
+ * file-level note.
147
+ */
148
+ withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
149
+ }> & PrefixedStringUtils<Type, Prefix, Separator>;
150
+ /**
151
+ * Build a branded `StringId` schema for the given branded `Id` type.
152
+ *
153
+ * Exposes `.withConstructorDefault` that mints a fresh `nanoid()`-shaped id.
154
+ * Construction-only — not applied during decode; see file-level note.
155
+ */
156
+ export declare const brandedStringId: <Id>() => WithDefaults<S.Codec<Id, string, never, never> & {
157
+ /**
158
+ * Construction-only default: fresh `nanoid()`-shaped id. Applied only
159
+ * when the field is omitted from `.make(...)` input. NOT applied
160
+ * during decode — cannot be used to JIT-migrate database fields. See
161
+ * file-level note.
162
+ */
163
+ withConstructorDefault: S.withConstructorDefault<S.Codec<Id, string> & S.WithoutConstructorDefault>;
164
+ make: () => Id;
165
+ } & WithDefaults<S.Codec<Id, string, never, never>>> & S.Codec<Id, string, never, never> & {
166
+ /**
167
+ * Construction-only default: fresh `nanoid()`-shaped id. Applied only
168
+ * when the field is omitted from `.make(...)` input. NOT applied
169
+ * during decode — cannot be used to JIT-migrate database fields. See
170
+ * file-level note.
171
+ */
172
+ withConstructorDefault: S.withConstructorDefault<S.Codec<Id, string> & S.WithoutConstructorDefault>;
173
+ make: () => Id;
174
+ } & WithDefaults<S.Codec<Id, string, never, never>>;
175
+ export interface PrefixedStringUtils<Type extends StringId, Prefix extends string, Separator extends string> {
176
+ readonly make: () => Type;
177
+ readonly unsafeFrom: (str: string) => Type;
178
+ prefixSafe: <REST extends string>(str: `${Prefix}${Separator}${REST}`) => Type;
102
179
  readonly prefix: Prefix;
103
- readonly withDefault: S.withConstructorDefault<S.Codec<Brand, string> & S.WithoutConstructorDefault>;
180
+ /**
181
+ * Construction-only default: fresh prefixed id. Applied only when the
182
+ * field is omitted from `.make(...)` input. NOT applied during decode —
183
+ * cannot be used to JIT-migrate database fields. See file-level note.
184
+ */
185
+ readonly withConstructorDefault: S.withConstructorDefault<S.Codec<Type, string> & S.WithoutConstructorDefault>;
104
186
  }
105
187
  export interface UrlBrand extends Simplify<B.Brand<"Url"> & NonEmptyStringBrand> {
106
188
  }
107
189
  export type Url = string & UrlBrand;
108
190
  export declare const Url: WithDefaults<S.refine<Url, S.String>> & S.refine<Url, S.String>;
109
- //# sourceMappingURL=moreStrings.d.ts.map
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbW9yZVN0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSTVDLE9BQU8sRUFBbUIsS0FBSyxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDN0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSS9FOztHQUVHO0FBQ0gsTUFBTSxXQUFXLHFCQUFzQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcscUJBQXFCLENBQUM7Q0FBRztBQUUvRzs7R0FFRztBQUNILE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcscUJBQXFCLENBQUE7QUFFN0Q7O0dBRUc7QUFDSCxlQUFPLE1BQU0sZ0JBQWdCLCtKQU81QixDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcscUJBQXNCLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztDQUFHO0FBRS9HOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQTtBQUU3RDs7R0FFRztBQUNILGVBQU8sTUFBTSxnQkFBZ0IsK0pBTzVCLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxxQkFBc0IsU0FBUSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO0NBQUc7QUFFaEg7O0dBRUc7QUFDSCxNQUFN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
@@ -1 +1 @@
1
- {"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAI/E;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,qBAAqB,CAAC;CAAG;AAE/G;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,gBAAgB,+JAO5B,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,qBAAqB,CAAC;CAAG;AAE/G;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,gBAAgB,+JAO5B,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAEhH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAE7D;;GAEG;AAEH,eAAO,MAAM,gBAAgB,+JAO5B,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAElH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,iBAAiB,iKAO7B,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAE1G;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,kBAAkB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,aAAa,yIAQzB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,qBAAqB,CAAC;CAAG;AAE/F;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAA;AAY7C;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;eAhBK,MAAM,KAAG,QAAQ;IA4BvC;;;;;OAKG;;;;IALH;;;;;OAKG;;CAIiB,CAAA;AAMxB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,QAAQ,MAC5C,MAAM,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,GAAG,GAAG,UACnD,MAAM,QACR,MAAM,cACA,SAAS;eAvDC,MAAM,KAAG,QAAQ;IA4BvC;;;;;OAKG;;;;IALH;;;;;OAKG;;;;IALH;;;;;OAKG;;;;IALH;;;;;OAKG;;kDAsEN;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE;IAIE;;;;;OAKG;4BACqB,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC;UAC7F,MAAM,EAAE;;IAPd;;;;;OAKG;;;mDAIN,CAAA;AAEH,MAAM,WAAW,mBAAmB,CAClC,IAAI,SAAS,QAAQ,EACrB,MAAM,SAAS,MAAM,EACrB,SAAS,SAAS,MAAM;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,UAAU,EAAE,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,CAAA;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAA;CAC/G;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC;CAAG;AAEnF,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AAMnC,eAAO,MAAM,GAAG,iEAeb,CAAA"}
@@ -1,17 +1,26 @@
1
- import { pipe } from "effect";
1
+ /**
2
+ * Branded string ID schemas with `.withConstructorDefault` extensions.
3
+ *
4
+ * Each `.withConstructorDefault` here is **only** applied when the field is
5
+ * omitted during construction (`.make(...)`). It is **not** applied during
6
+ * decode and therefore cannot be used to JIT-migrate database fields.
7
+ *
8
+ * For persisted data, prefer an explicit, preferably versioned migration
9
+ * over decode-time fallbacks. See `./ext.ts` for the full policy note.
10
+ */
11
+ import { Effect, pipe } from "effect";
2
12
  import { extendM } from "effect-app/utils";
3
13
  import * as S from "effect/Schema";
4
14
  import { customRandom, nanoid, urlAlphabet } from "nanoid";
5
15
  import validator from "validator";
6
16
  import { fromBrand, nominal } from "./brand.js";
7
- import { withDefaultConstructor, withDefaultMake } from "./ext.js";
17
+ import { withDefaultMake } from "./ext.js";
8
18
  const nonEmptyString = S.NonEmptyString;
9
19
  /**
10
20
  * A string that is at least 1 character long and a maximum of 50.
11
21
  */
12
22
  export const NonEmptyString50 = nonEmptyString.pipe(S.check(S.isMaxLength(50)), fromBrand(nominal(), {
13
23
  identifier: "NonEmptyString50",
14
- title: "NonEmptyString50",
15
24
  jsonSchema: {}
16
25
  }), withDefaultMake);
17
26
  /**
@@ -19,7 +28,6 @@ export const NonEmptyString50 = nonEmptyString.pipe(S.check(S.isMaxLength(50)),
19
28
  */
20
29
  export const NonEmptyString64 = nonEmptyString.pipe(S.check(S.isMaxLength(64)), fromBrand(nominal(), {
21
30
  identifier: "NonEmptyString64",
22
- title: "NonEmptyString64",
23
31
  jsonSchema: {}
24
32
  }), withDefaultMake);
25
33
  /**
@@ -27,7 +35,6 @@ export const NonEmptyString64 = nonEmptyString.pipe(S.check(S.isMaxLength(64)),
27
35
  */
28
36
  export const NonEmptyString80 = nonEmptyString.pipe(S.check(S.isMaxLength(80)), fromBrand(nominal(), {
29
37
  identifier: "NonEmptyString80",
30
- title: "NonEmptyString80",
31
38
  jsonSchema: {}
32
39
  }), withDefaultMake);
33
40
  /**
@@ -35,14 +42,16 @@ export const NonEmptyString80 = nonEmptyString.pipe(S.check(S.isMaxLength(80)),
35
42
  */
36
43
  export const NonEmptyString100 = nonEmptyString.pipe(S.check(S.isMaxLength(100)), fromBrand(nominal(), {
37
44
  identifier: "NonEmptyString100",
38
- title: "NonEmptyString100",
39
45
  jsonSchema: {}
40
46
  }), withDefaultMake);
41
47
  /**
42
48
  * A string that is at least 3 character long and a maximum of 255.
43
49
  */
44
- export const Min3String255 = pipe(S.String, S.check(S.isMinLength(3), S.isMaxLength(255)), fromBrand(nominal(), { identifier: "Min3String255", title: "Min3String255", jsonSchema: {} }), withDefaultMake);
45
- const makeStringId = () => nanoid();
50
+ export const Min3String255 = pipe(S.String, S.check(S.isMinLength(3), S.isMaxLength(255)), fromBrand(nominal(), {
51
+ identifier: "Min3String255",
52
+ jsonSchema: {}
53
+ }), withDefaultMake);
54
+ const makeStringId = (s) => s !== undefined ? S.decodeSync(StringId)(s) : nanoid();
46
55
  const minLength = 6;
47
56
  const maxLength = 50;
48
57
  const size = 21;
@@ -52,19 +61,35 @@ const StringIdArb = () => (fc) => fc
52
61
  .map((_) => customRandom(urlAlphabet, size, (size) => _.subarray(0, size))());
53
62
  /**
54
63
  * A string that is at least 6 characters long and a maximum of 50.
64
+ *
65
+ * `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
66
+ * applied during decode — see file-level note).
55
67
  */
56
68
  export const StringId = extendM(pipe(S.String, S.check(S.isMinLength(minLength), S.isMaxLength(maxLength)), fromBrand(nominal(), {
57
69
  identifier: "StringId",
58
- title: "StringId",
59
70
  toArbitrary: () => (fc) => StringIdArb()(fc),
60
71
  jsonSchema: {}
61
72
  })), (s) => ({
62
73
  make: makeStringId,
63
- withDefault: s.pipe(withDefaultConstructor(makeStringId))
74
+ /**
75
+ * Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
76
+ * only when the field is omitted from `.make(...)` input. NOT applied
77
+ * during decode — cannot be used to JIT-migrate database fields. See
78
+ * file-level note.
79
+ */
80
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(makeStringId)))
64
81
  }))
65
82
  .pipe(withDefaultMake);
66
83
  // const prefixedStringIdUnsafe = (prefix: string) => StringId(prefix + StringId.make())
67
84
  // const prefixedStringIdUnsafeThunk = (prefix: string) => () => prefixedStringIdUnsafe(prefix)
85
+ /**
86
+ * Build a `StringId` schema whose values are required to start with a fixed
87
+ * `prefix` (joined with `separator`, default `-`).
88
+ *
89
+ * The returned schema exposes `.withConstructorDefault` that mints a fresh
90
+ * prefixed id. Construction-only — not applied during decode; see file-level
91
+ * note.
92
+ */
68
93
  export function prefixedStringId() {
69
94
  return (prefix, name, separator) => {
70
95
  const pref = `${prefix}${separator ?? "-"}`;
@@ -72,8 +97,7 @@ export function prefixedStringId() {
72
97
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
73
98
  const s = StringId
74
99
  .pipe(S.refine((x) => x.startsWith(pref), {
75
- identifier: name,
76
- title: name
100
+ identifier: name
77
101
  }), S.annotate({
78
102
  toArbitrary: () => (fc) => arb()(fc)
79
103
  }));
@@ -90,21 +114,35 @@ export function prefixedStringId() {
90
114
  */
91
115
  prefixSafe: (str) => ex(str),
92
116
  prefix,
93
- withDefault: schema.pipe(withDefaultConstructor(make))
117
+ /**
118
+ * Construction-only default: fresh prefixed id. Applied only when
119
+ * the field is omitted from `.make(...)` input. NOT applied during
120
+ * decode — cannot be used to JIT-migrate database fields. See
121
+ * file-level note.
122
+ */
123
+ withConstructorDefault: schema.pipe(S.withConstructorDefault(Effect.sync(make)))
94
124
  }));
95
125
  };
96
126
  }
127
+ /**
128
+ * Build a branded `StringId` schema for the given branded `Id` type.
129
+ *
130
+ * Exposes `.withConstructorDefault` that mints a fresh `nanoid()`-shaped id.
131
+ * Construction-only — not applied during decode; see file-level note.
132
+ */
97
133
  export const brandedStringId = () => withDefaultMake(Object.assign(Object.create(StringId), StringId));
98
134
  const isUrl = (s) => {
99
135
  return validator.default.isURL(s, { require_tld: false });
100
136
  };
101
137
  export const Url = S
102
138
  .String
103
- .pipe(S.refine(isUrl, {
104
- identifier: "Url",
139
+ .pipe(S.annotate({
105
140
  title: "Url",
141
+ format: "uri"
142
+ }), S.refine(isUrl, {
143
+ identifier: "Url",
106
144
  jsonSchema: { format: "uri" }
107
145
  }), S.annotate({
108
146
  toArbitrary: () => (fc) => fc.webUrl().map((_) => _)
109
147
  }), withDefaultMake);
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL21vcmVTdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMxRCxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBcUIsTUFBTSxVQUFVLENBQUE7QUFJckYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtBQVl2Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMxQixTQUFTLENBQUMsT0FBTyxFQUFvQixFQUFFO0lBQ3JDLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFZRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMxQixTQUFTLENBQUMsT0FBTyxFQUFvQixFQUFFO0lBQ3JDLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFZRDs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMxQixTQUFTLENBQUMsT0FBTyxFQUFvQixFQUFFO0lBQ3JDLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFZRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2xELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMzQixTQUFTLENBQUMsT0FBTyxFQUFxQixFQUFFO0lBQ3RDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFZRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQy9CLENBQUMsQ0FBQyxNQUFNLEVBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDN0MsU0FBUyxDQUFDLE9BQU8sRUFBaUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDNUcsZUFBZSxDQUNoQixDQUFBO0FBWUQsTUFBTSxZQUFZLEdBQUcsR0FBYSxFQUFFLENBQUMsTUFBTSxFQUF5QixDQUFBO0FBQ3BFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQTtBQUNuQixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7QUFDcEIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBQ2YsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQTtBQUN4QixNQUFNLFdBQVcsR0FBRyxHQUE4QixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUMxRCxFQUFFO0tBQ0MsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDcEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBYyxDQUFDLENBQUE7QUFDN0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUM3QixJQUFJLENBQ0YsQ0FBQyxDQUFDLE1BQU0sRUFDUixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUMzRCxTQUFTLENBQUMsT0FBTyxFQUFZLEVBQUU7SUFDN0IsVUFBVSxFQUFFLFVBQVU7SUFDdEIsS0FBSyxFQUFFLFVBQVU7SUFDakIsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUMsVUFBVSxFQUFFLEVBQUU7Q0FDZixDQUFDLENBQ0gsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNOLElBQUksRUFBRSxZQUFZO0lBQ2xCLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO0NBQzFELENBQUMsQ0FDSDtLQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUV4Qix3RkFBd0Y7QUFFeEYsK0ZBQStGO0FBRS9GLE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTyxDQUNMLE1BQWMsRUFDZCxJQUFZLEVBQ1osU0FBcUIsRUFDckIsRUFBRTtRQUVGLE1BQU0sSUFBSSxHQUFHLEdBQUcsTUFBTSxHQUFHLFNBQVMsSUFBSSxHQUFHLEVBQWdCLENBQUE7UUFDekQsTUFBTSxHQUFHLEdBQUcsR0FBb0MsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDeEQsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUNuQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBVSxDQUMxRCxDQUFBO1FBQ0gsbUVBQW1FO1FBQ25FLE1BQU0sQ0FBQyxHQUFvQyxRQUFRO2FBQ2hELElBQUksQ0FDSCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUyxFQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsRUFDRixDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ1QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDckMsQ0FBQyxDQUNnQyxDQUFBO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDdEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBVSxDQUFBO1FBRW5GLE9BQU8sT0FBTyxDQUNaLE1BQU0sRUFDTixDQUFDLEVBQUUsRUFBaUQsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSTtZQUNKOztlQUVHO1lBQ0gsVUFBVSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUMzQzs7ZUFFRztZQUNILFVBQVUsRUFBRSxDQUFzQixHQUFtQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2pGLE1BQU07WUFDTixXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RCxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FFM0IsRUFBRSxDQUNKLGVBQWUsQ0FDYixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUdFLENBQ2xELENBQUE7QUFrQkgsTUFBTSxLQUFLLEdBQTRCLENBQUMsQ0FBUyxFQUFZLEVBQUU7SUFDN0QsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUMzRCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztLQUNqQixNQUFNO0tBQ04sSUFBSSxDQUNILENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ2QsVUFBVSxFQUFFLEtBQUs7SUFDakIsS0FBSyxFQUFFLEtBQUs7SUFDWixVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0NBQzlCLENBQUMsRUFDRixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ1QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFRLENBQUM7Q0FDNUQsQ0FBQyxFQUNGLGVBQWUsQ0FDaEIsQ0FBQSJ9
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL21vcmVTdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRXJDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDMUQsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQXFCLE1BQU0sVUFBVSxDQUFBO0FBSTdELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUE7QUFZdkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUIsU0FBUyxDQUFtQixPQUFPLEVBQW9CLEVBQUU7SUFDdkQsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFZRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMxQixTQUFTLENBQW1CLE9BQU8sRUFBb0IsRUFBRTtJQUN2RCxVQUFVLEVBQUUsa0JBQWtCO0lB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
@@ -3,44 +3,84 @@ import type { Simplify } from "effect/Types";
3
3
  import { type B } from "./schema.js";
4
4
  export interface PositiveIntBrand extends Simplify<B.Brand<"PositiveInt"> & NonNegativeIntBrand & PositiveNumberBrand> {
5
5
  }
6
- export declare const PositiveInt: import("./ext.js").WithDefaults<S.brand<S.Int, "PositiveInt" | "NonNegativeInt" | "Int" | "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Int, "PositiveInt" | "NonNegativeInt" | "Int" | "NonNegativeNumber" | "PositiveNumber"> & {
7
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Int, "PositiveInt" | "NonNegativeInt" | "Int" | "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Int, "PositiveInt" | "NonNegativeInt" | "Int" | "NonNegativeNumber" | "PositiveNumber"> & S.WithoutConstructorDefault>;
6
+ /** Positive integer. `.withConstructorDefault` => `1` (construction-only). */
7
+ export declare const PositiveInt: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, PositiveInt>> & import("./brand.js").BrandedSchema<S.Int, PositiveInt> & {
8
+ /**
9
+ * Construction-only default `1`. Applied only when the field is omitted
10
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
11
+ * JIT-migrate database fields. See file-level note.
12
+ */
13
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, PositiveInt>> & import("./brand.js").BrandedSchema<S.Int, PositiveInt>>;
8
14
  };
9
15
  export type PositiveInt = number & PositiveIntBrand;
10
16
  export interface NonNegativeIntBrand extends Simplify<B.Brand<"NonNegativeInt"> & IntBrand & NonNegativeNumberBrand> {
11
17
  }
12
- export declare const NonNegativeInt: import("./ext.js").WithDefaults<S.brand<S.Int, "NonNegativeInt" | "Int" | "NonNegativeNumber">> & S.brand<S.Int, "NonNegativeInt" | "Int" | "NonNegativeNumber"> & {
13
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Int, "NonNegativeInt" | "Int" | "NonNegativeNumber">> & S.brand<S.Int, "NonNegativeInt" | "Int" | "NonNegativeNumber"> & S.WithoutConstructorDefault>;
18
+ /** Non-negative integer. `.withConstructorDefault` => `0` (construction-only). */
19
+ export declare const NonNegativeInt: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>> & import("./brand.js").BrandedSchema<S.Int, NonNegativeInt> & {
20
+ /**
21
+ * Construction-only default `0`. Applied only when the field is omitted
22
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
23
+ * JIT-migrate database fields. See file-level note.
24
+ */
25
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>> & import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>>;
14
26
  };
15
27
  export type NonNegativeInt = number & NonNegativeIntBrand;
16
28
  export interface IntBrand extends Simplify<B.Brand<"Int">> {
17
29
  }
18
- export declare const Int: import("./ext.js").WithDefaults<S.brand<S.Int, "Int">> & S.brand<S.Int, "Int"> & {
19
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Int, "Int">> & S.brand<S.Int, "Int"> & S.WithoutConstructorDefault>;
30
+ /** Integer. `.withConstructorDefault` => `0` (construction-only). */
31
+ export declare const Int: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, Int>> & import("./brand.js").BrandedSchema<S.Int, Int> & {
32
+ /**
33
+ * Construction-only default `0`. Applied only when the field is omitted
34
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
35
+ * JIT-migrate database fields. See file-level note.
36
+ */
37
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, Int>> & import("./brand.js").BrandedSchema<S.Int, Int>>;
20
38
  };
21
39
  export type Int = number & IntBrand;
22
40
  export interface PositiveNumberBrand extends Simplify<B.Brand<"PositiveNumber"> & NonNegativeNumberBrand> {
23
41
  }
24
- export declare const PositiveNumber: import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber"> & {
25
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber"> & S.WithoutConstructorDefault>;
42
+ /** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
43
+ export declare const PositiveNumber: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber> & {
44
+ /**
45
+ * Construction-only default `1`. Applied only when the field is omitted
46
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
47
+ * JIT-migrate database fields. See file-level note.
48
+ */
49
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>>;
26
50
  };
27
51
  export type PositiveNumber = number & PositiveNumberBrand;
28
52
  export interface NonNegativeNumberBrand extends Simplify<B.Brand<"NonNegativeNumber">> {
29
53
  }
30
- export declare const NonNegativeNumber: import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber">> & S.brand<S.Number, "NonNegativeNumber"> & {
31
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber">> & S.brand<S.Number, "NonNegativeNumber"> & S.WithoutConstructorDefault>;
54
+ /** Non-negative finite number. `.withConstructorDefault` => `0` (construction-only). */
55
+ export declare const NonNegativeNumber: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber> & {
56
+ /**
57
+ * Construction-only default `0`. Applied only when the field is omitted
58
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
59
+ * JIT-migrate database fields. See file-level note.
60
+ */
61
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>>;
32
62
  };
33
63
  export type NonNegativeNumber = number & NonNegativeNumberBrand;
34
64
  /** @deprecated Not an actual decimal */
35
- export declare const NonNegativeDecimal: import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber">> & S.brand<S.Number, "NonNegativeNumber"> & {
36
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber">> & S.brand<S.Number, "NonNegativeNumber"> & S.WithoutConstructorDefault>;
65
+ export declare const NonNegativeDecimal: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber> & {
66
+ /**
67
+ * Construction-only default `0`. Applied only when the field is omitted
68
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
69
+ * JIT-migrate database fields. See file-level note.
70
+ */
71
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>>;
37
72
  };
38
73
  /** @deprecated Not an actual decimal */
39
74
  export type NonNegativeDecimal = NonNegativeNumber;
40
75
  /** @deprecated Not an actual decimal */
41
- export declare const PositiveDecimal: import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber"> & {
42
- withDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber">> & S.brand<S.Number, "NonNegativeNumber" | "PositiveNumber"> & S.WithoutConstructorDefault>;
76
+ export declare const PositiveDecimal: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber> & {
77
+ /**
78
+ * Construction-only default `1`. Applied only when the field is omitted
79
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
80
+ * JIT-migrate database fields. See file-level note.
81
+ */
82
+ withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>>;
43
83
  };
44
84
  /** @deprecated Not an actual decimal */
45
85
  export type PositiveDecimal = PositiveNumber;
46
- //# sourceMappingURL=numbers.d.ts.map
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9udW1iZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUc1QyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxXQUFXLGdCQUNmLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7Q0FDcEY7QUFDRiw4RUFBOEU7QUFDOUUsZUFBTyxNQUFNLFdBQVc7SUFPcEI7Ozs7T0FJRzs7Q0FHTixDQUFBO0FBQ0QsTUFBTSxNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsZ0JBQWdCLENBQUE7QUFFbkQsTUFBTSxXQUFXLG1CQUFvQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxHQUFHLHNCQUFzQixDQUFDO0NBQUc7QUFDdkgsa0ZBQWtGO0FBQ2xGLGVBQU8sTUFBTSxjQUFjO0lBVXZCOzs7O09BSUc7O0NBR04sQ0FBQTtBQUNELE1BQU0sTUFBTSxjQUFjLEdBQUcsTUFBTSxHQUFHLG1CQUFtQixDQUFBO0FBRXpELE1BQU0sV0FBVyxRQUFTLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FBRztBQUM3RCxxRUFBcUU7QUFDckUsZUFBTyxNQUFNLEdBQUc7SUFHWjs7OztPQUlHOztDQUdOLENBQUE7QUFDRCxNQUFNLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUE7QUFFbkMsTUFBTSxXQUFXLG1CQUFvQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsc0JBQXNCLENBQUM7Q0FBRztBQUM1RyxvRkFBb0Y7QUFDcEYsZUFBTyxNQUFNLGNBQWM7SUFVdkI7Ozs7T0FJRzs7Q0FHTixDQUFBO0FBQ0QsTUFBTSxNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7QUFFekQsTUFBTSxXQUFXLHNCQUF1QixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Q0FBRztBQUN6Rix3RkFBd0Y7QUFDeEYsZUFBTyxNQUFNLGlCQUFpQjtJQVkxQjs7OztPQUlHOztDQUdOLENBQUE7QUFDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHLHNCQUFzQixDQUFBO0FBRS9ELHdDQUF3QztBQUN4QyxlQUFPLE1BQU0sa0JBQWtCO0lBWDNCOzs7O09BSUc7O0NBTzRDLENBQUE7QUFDbkQsd0NBQXdDO0FBQ3hDLE1BQU0sTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUVsRCx3Q0FBd0M7QUFDeEMsZUFBTyxNQUFNLGVBQWU7SUF4Q3hCOzs7O09BSUc7O0NBb0NzQyxDQUFBO0FBQzdDLHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,gBACf,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;CACpF;AACF,eAAO,MAAM,WAAW;;CAOvB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEnD,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC;CAAG;AACvH,eAAO,MAAM,cAAc;;CAW1B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAAG;AAC7D,eAAO,MAAM,GAAG;;CAGf,CAAA;AACD,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnC,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAC5G,eAAO,MAAM,cAAc;;CAW1B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CAAG;AACzF,eAAO,MAAM,iBAAiB;;CAa7B,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAE/D,wCAAwC;AACxC,eAAO,MAAM,kBAAkB;;CAAoB,CAAA;AACnD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAA;AAElD,wCAAwC;AACxC,eAAO,MAAM,eAAe;;CAAiB,CAAA;AAC7C,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,gBACf,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;CACpF;AACF,8EAA8E;AAC9E,eAAO,MAAM,WAAW;IAOpB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEnD,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC;CAAG;AACvH,kFAAkF;AAClF,eAAO,MAAM,cAAc;IAUvB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAAG;AAC7D,qEAAqE;AACrE,eAAO,MAAM,GAAG;IAGZ;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnC,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAC5G,oFAAoF;AACpF,eAAO,MAAM,cAAc;IAUvB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CAAG;AACzF,wFAAwF;AACxF,eAAO,MAAM,iBAAiB;IAY1B;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAE/D,wCAAwC;AACxC,eAAO,MAAM,kBAAkB;IAX3B;;;;OAIG;;CAO4C,CAAA;AACnD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAA;AAElD,wCAAwC;AACxC,eAAO,MAAM,eAAe;IAxCxB;;;;OAIG;;CAoCsC,CAAA;AAC7C,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA"}
@@ -1,28 +1,76 @@
1
+ /**
2
+ * Numeric brand schemas with `.withConstructorDefault` extensions.
3
+ *
4
+ * Each `.withConstructorDefault` here is **only** applied when the field is
5
+ * omitted during construction (`.make(...)`). It is **not** applied during
6
+ * decode and therefore cannot be used to JIT-migrate database fields.
7
+ *
8
+ * For persisted data, prefer an explicit, preferably versioned migration
9
+ * over decode-time fallbacks. See `./ext.ts` for the full policy note.
10
+ */
11
+ import { Effect } from "effect";
1
12
  import { extendM } from "effect-app/utils";
2
13
  import * as S from "effect/Schema";
3
14
  import { fromBrand, nominal } from "./brand.js";
4
- import { withDefaultConstructor, withDefaultMake } from "./ext.js";
5
- export const PositiveInt = extendM(S.Int.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), { identifier: "PositiveInt", title: "PositiveInt", jsonSchema: {} }), withDefaultMake), (s) => ({ withDefault: s.pipe(withDefaultConstructor(() => s(1))) }));
15
+ import { withDefaultMake } from "./ext.js";
16
+ /** Positive integer. `.withConstructorDefault` => `1` (construction-only). */
17
+ export const PositiveInt = extendM(S.Int.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), { identifier: "PositiveInt", jsonSchema: {} }), withDefaultMake), (s) => ({
18
+ /**
19
+ * Construction-only default `1`. Applied only when the field is omitted
20
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
21
+ * JIT-migrate database fields. See file-level note.
22
+ */
23
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(1))))
24
+ }));
25
+ /** Non-negative integer. `.withConstructorDefault` => `0` (construction-only). */
6
26
  export const NonNegativeInt = extendM(S.Int.pipe(S.check(S.isGreaterThanOrEqualTo(0)), fromBrand(nominal(), {
7
27
  identifier: "NonNegativeInt",
8
- title: "NonNegativeInt",
9
28
  jsonSchema: {}
10
- }), withDefaultMake), (s) => ({ withDefault: s.pipe(withDefaultConstructor(() => s(0))) }));
11
- export const Int = extendM(S.Int.pipe(fromBrand(nominal(), { identifier: "Int", title: "Int", jsonSchema: {} }), withDefaultMake), (s) => ({ withDefault: s.pipe(withDefaultConstructor(() => s(0))) }));
12
- export const PositiveNumber = extendM(S.Number.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), {
29
+ }), withDefaultMake), (s) => ({
30
+ /**
31
+ * Construction-only default `0`. Applied only when the field is omitted
32
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
33
+ * JIT-migrate database fields. See file-level note.
34
+ */
35
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
36
+ }));
37
+ /** Integer. `.withConstructorDefault` => `0` (construction-only). */
38
+ export const Int = extendM(S.Int.pipe(fromBrand(nominal(), { identifier: "Int", jsonSchema: {} }), withDefaultMake), (s) => ({
39
+ /**
40
+ * Construction-only default `0`. Applied only when the field is omitted
41
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
42
+ * JIT-migrate database fields. See file-level note.
43
+ */
44
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
45
+ }));
46
+ /** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
47
+ export const PositiveNumber = extendM(S.Finite.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), {
13
48
  identifier: "PositiveNumber",
14
- title: "PositiveNumber",
15
49
  jsonSchema: {}
16
- }), withDefaultMake), (s) => ({ withDefault: s.pipe(withDefaultConstructor(() => s(1))) }));
50
+ }), withDefaultMake), (s) => ({
51
+ /**
52
+ * Construction-only default `1`. Applied only when the field is omitted
53
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
54
+ * JIT-migrate database fields. See file-level note.
55
+ */
56
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(1))))
57
+ }));
58
+ /** Non-negative finite number. `.withConstructorDefault` => `0` (construction-only). */
17
59
  export const NonNegativeNumber = extendM(S
18
- .Number
60
+ .Finite
19
61
  .pipe(S.check(S.isGreaterThanOrEqualTo(0)), fromBrand(nominal(), {
20
62
  identifier: "NonNegativeNumber",
21
- title: "NonNegativeNumber",
22
63
  jsonSchema: {}
23
- }), withDefaultMake), (s) => ({ withDefault: s.pipe(withDefaultConstructor(() => s(0))) }));
64
+ }), withDefaultMake), (s) => ({
65
+ /**
66
+ * Construction-only default `0`. Applied only when the field is omitted
67
+ * from `.make(...)` input. NOT applied during decode — cannot be used to
68
+ * JIT-migrate database fields. See file-level note.
69
+ */
70
+ withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
71
+ }));
24
72
  /** @deprecated Not an actual decimal */
25
73
  export const NonNegativeDecimal = NonNegativeNumber;
26
74
  /** @deprecated Not an actual decimal */
27
75
  export const PositiveDecimal = PositiveNumber;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFFbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQU1sRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUNoQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDUixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0IsU0FBUyxDQUFDLE9BQU8sRUFBZSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUN0RyxlQUFlLENBQ2hCLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDckUsQ0FBQTtBQUlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQ25DLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLFNBQVMsQ0FBQyxPQUFPLEVBQWtCLEVBQUU7SUFDbkMsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLFVBQVUsRUFBRSxFQUFFO0NBQ2YsQ0FBQyxFQUNGLGVBQWUsQ0FDaEIsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNyRSxDQUFBO0FBSUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FDeEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUMzRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNyRSxDQUFBO0FBSUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxPQUFPLEVBQWtCLEVBQUU7SUFDbkMsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLFVBQVUsRUFBRSxFQUFFO0NBQ2YsQ0FBQyxFQUNGLGVBQWUsQ0FDaEIsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNyRSxDQUFBO0FBSUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUN0QyxDQUFDO0tBQ0UsTUFBTTtLQUNOLElBQUksQ0FDSCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNwQyxTQUFTLENBQUMsT0FBTyxFQUFxQixFQUFFO0lBQ3RDLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixVQUFVLEVBQUUsRUFBRTtDQUNmLENBQUMsRUFDRixlQUFlLENBQ2hCLEVBQ0gsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDckUsQ0FBQTtBQUdELHdDQUF3QztBQUN4QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUluRCx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQSJ9
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUVsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBTTFDLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUNoQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDUixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0IsU0FBUyxDQUFjLE9BQU8sRUFBZSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDN0YsZUFBZSxDQUNoQixFQUNELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ047Ozs7T0FJRztJQUNILHNCQUFzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsRixDQUFDLENBQ0gsQ0FBQTtBQUlELGtGQUFrRjtBQUNsRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUNuQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDUixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxzQkFBc0Is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