diff --git a/base/schema-typescript-effect-schema/test/inputs/schema/integer-string.schema/default/TopLevel.ts b/head/schema-typescript-effect-schema/test/inputs/schema/integer-string.schema/default/TopLevel.ts
index ee80e62..17acf94 100644
--- a/base/schema-typescript-effect-schema/test/inputs/schema/integer-string.schema/default/TopLevel.ts
+++ b/head/schema-typescript-effect-schema/test/inputs/schema/integer-string.schema/default/TopLevel.ts
@@ -1,12 +1,17 @@
 import * as S from "effect/Schema";
 
 
+export const UnionWithIntAndEnumEnum = S.Literal(
+    "foo",
+);
+export type UnionWithIntAndEnumEnum = S.Schema.Type<typeof UnionWithIntAndEnumEnum>;
+
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
-    "arrNullable": S.optional(S.NullOr(S.Array(S.NullOr(S.String)))),
-    "arrOne": S.optional(S.NullOr(S.Array(S.String))),
-    "nullable": S.NullOr(S.String),
-    "one": S.String,
-    "optional": S.optional(S.NullOr(S.String)),
-    "unionWithInt": S.Union(S.Int, S.String),
-    "unionWithIntAndEnum": S.Union(S.Int, S.String),
+    "arrNullable": S.optional(S.NullOr(S.Array(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))))),
+    "arrOne": S.optional(S.NullOr(S.Array(S.String.pipe(S.pattern(/^-?\d+$/))))),
+    "nullable": S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/))),
+    "one": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "optional": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "unionWithInt": S.Union(S.Int, S.NumberFromString.pipe(S.int())),
+    "unionWithIntAndEnum": S.Union(UnionWithIntAndEnumEnum, S.Int, S.NumberFromString.pipe(S.int())),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/00c36.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/00c36.json/default/TopLevel.ts
index 5a1e75d..56d57c5 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/00c36.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/00c36.json/default/TopLevel.ts
@@ -17,7 +17,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
@@ -28,8 +28,8 @@ export class Country extends S.Class<Country>("Country")({
 
 export class PurpleTopLevel extends S.Class<PurpleTopLevel>("PurpleTopLevel")({
     "country": Country,
-    "date": S.String,
-    "decimal": S.String,
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "decimal": S.String.pipe(S.pattern(/^-?\d+$/)),
     "indicator": Country,
     "value": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0b91a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
index 872b787..91299dd 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0b91a.json/default/TopLevel.ts
@@ -9,10 +9,10 @@ export class Component extends S.Class<Component>("Component")({
 export class Result extends S.Class<Result>("Result")({
     "attachment": S.Array(S.Any),
     "body": S.String,
-    "changed": S.String,
+    "changed": S.String.pipe(S.pattern(/^-?\d+$/)),
     "component": S.Array(Component),
-    "created": S.String,
-    "date": S.String,
+    "created": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
     "image": S.Array(S.Any),
     "number": S.Null,
     "teaser": S.Null,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/0cffa.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
index 10f0618..28d9600 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/0cffa.json/default/TopLevel.ts
@@ -45,34 +45,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/127a1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/127a1.json/default/TopLevel.ts
index 04a57ee..b55d502 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/127a1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/127a1.json/default/TopLevel.ts
@@ -44,34 +44,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/16bc5.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/176f1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/176f1.json/default/TopLevel.ts
index 8b6acf5..1bb3a07 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/176f1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/176f1.json/default/TopLevel.ts
@@ -11,7 +11,7 @@ export class Datum extends S.Class<Datum>("Datum")({
     "period": S.String,
     "periodName": S.String,
     "value": S.String,
-    "year": S.String,
+    "year": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Series extends S.Class<Series>("Series")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
index c535637..28c5599 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/1b409.json/default/TopLevel.ts
@@ -67,7 +67,7 @@ export class Person extends S.Class<Person>("Person")({
     "namemod": Namemod,
     "nickname": S.String,
     "osid": S.String,
-    "pvsid": S.NullOr(S.String),
+    "pvsid": S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/))),
     "sortname": S.String,
     "twitterid": S.NullOr(S.String),
     "youtubeid": S.NullOr(S.String),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
index c86b835..0e5c50e 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/262f0.json/default/TopLevel.ts
@@ -9,9 +9,9 @@ export const Text = S.Literal(
 export type Text = S.Schema.Type<typeof Text>;
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -32,18 +32,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
@@ -60,17 +60,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -90,7 +90,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/26b49.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/26b49.json/default/TopLevel.ts
index 5b8e285..1a727b9 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/26b49.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/26b49.json/default/TopLevel.ts
@@ -38,34 +38,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/26c9c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
index d0b877c..b2a1206 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/26c9c.json/default/TopLevel.ts
@@ -94,7 +94,7 @@ export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "custom_fields": CustomFields,
     "jsonQuery": JsonQuery,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
 }) {}
 
@@ -122,7 +122,7 @@ export class CachedContents extends S.Class<CachedContents>("CachedContents")({
     "non_null": S.Int,
     "null": S.Int,
     "smallest": S.String,
-    "sum": S.optional(S.NullOr(S.String)),
+    "sum": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "top": S.Array(Top),
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/27332.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/27332.json/default/TopLevel.ts
index c316a9f..1984589 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/27332.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/27332.json/default/TopLevel.ts
@@ -121,7 +121,7 @@ export class ChildData extends S.Class<ChildData>("ChildData")({
     "is_self": S.Boolean,
     "is_video": S.Boolean,
     "likes": S.Null,
-    "link_flair_css_class": S.NullOr(S.String),
+    "link_flair_css_class": S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/))),
     "link_flair_text": S.NullOr(S.String),
     "locked": S.Boolean,
     "media": S.NullOr(Media),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
index 99b7ae9..aa14d4d 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/2d4e2.json/default/TopLevel.ts
@@ -93,7 +93,7 @@ export class Person extends S.Class<Person>("Person")({
     "namemod": Namemod,
     "nickname": S.String,
     "osid": S.String,
-    "pvsid": S.String,
+    "pvsid": S.String.pipe(S.pattern(/^-?\d+$/)),
     "sortname": S.String,
     "twitterid": S.NullOr(S.String),
     "youtubeid": S.NullOr(S.String),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/2df80.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/2df80.json/default/TopLevel.ts
index 945e415..92fbfe9 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/2df80.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/2df80.json/default/TopLevel.ts
@@ -57,7 +57,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
index 5e2f93d..1075f86 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/33d2e.json/default/TopLevel.ts
@@ -30,8 +30,8 @@ export class Prize extends S.Class<Prize>("Prize")({
     "category": S.optional(S.NullOr(Category)),
     "motivation": S.optional(S.NullOr(S.String)),
     "overallMotivation": S.optional(S.NullOr(S.String)),
-    "share": S.optional(S.NullOr(S.String)),
-    "year": S.optional(S.NullOr(S.String)),
+    "share": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "year": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
 }) {}
 
 export class Laureate extends S.Class<Laureate>("Laureate")({
@@ -45,7 +45,7 @@ export class Laureate extends S.Class<Laureate>("Laureate")({
     "diedCountryCode": S.optional(S.NullOr(S.String)),
     "firstname": S.optional(S.NullOr(S.String)),
     "gender": Gender,
-    "id": S.String,
+    "id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "prizes": S.Array(Prize),
     "surname": S.optional(S.NullOr(S.String)),
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/34702.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/34702.json/default/TopLevel.ts
index 966e760..211394c 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/34702.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/34702.json/default/TopLevel.ts
@@ -64,7 +64,7 @@ export const FeatureType = S.Literal(
 export type FeatureType = S.Schema.Type<typeof FeatureType>;
 
 export class FeatureProperties extends S.Class<FeatureProperties>("FeatureProperties")({
-    "division": S.String,
+    "division": S.String.pipe(S.pattern(/^-?\d+$/)),
     "fax": S.Number,
     "fire_ban_r": S.NullOr(FireBanR),
     "latitude": S.Number,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
index 8b6acf5..1bb3a07 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3e9a3.json/default/TopLevel.ts
@@ -11,7 +11,7 @@ export class Datum extends S.Class<Datum>("Datum")({
     "period": S.String,
     "periodName": S.String,
     "value": S.String,
-    "year": S.String,
+    "year": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Series extends S.Class<Series>("Series")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
index 7b56165..bf87d65 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/3f1ce.json/default/TopLevel.ts
@@ -7,9 +7,9 @@ export const Text = S.Literal(
 export type Text = S.Schema.Type<typeof Text>;
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -30,18 +30,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -58,17 +58,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -88,7 +88,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/421d4.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/421d4.json/default/TopLevel.ts
index cd349b9..5ee42ed 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/421d4.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/421d4.json/default/TopLevel.ts
@@ -18,9 +18,9 @@ export class RenderTypeConfig extends S.Class<RenderTypeConfig>("RenderTypeConfi
 export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "rdfClass": S.String,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
-    "rowIdentifier": S.String,
+    "rowIdentifier": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class License extends S.Class<License>("License")({
@@ -47,7 +47,7 @@ export class CachedContents extends S.Class<CachedContents>("CachedContents")({
     "non_null": S.Int,
     "null": S.Int,
     "smallest": S.optional(S.NullOr(S.String)),
-    "sum": S.optional(S.NullOr(S.String)),
+    "sum": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "top": S.optional(S.NullOr(S.Array(Top))),
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/437e7.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/437e7.json/default/TopLevel.ts
index c8b3f78..ae50960 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/437e7.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/437e7.json/default/TopLevel.ts
@@ -38,33 +38,33 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/458db.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/458db.json/default/TopLevel.ts
index bca18cf..9380c23 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/458db.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/458db.json/default/TopLevel.ts
@@ -14,9 +14,9 @@ export class Component extends S.Class<Component>("Component")({
 export class Result extends S.Class<Result>("Result")({
     "attachments": S.Array(S.Any),
     "body": S.String,
-    "changed": S.String,
+    "changed": S.String.pipe(S.pattern(/^-?\d+$/)),
     "component": S.Array(Component),
-    "created": S.String,
+    "created": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "image": S.Array(S.Any),
     "teaser": S.Array(S.Any),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/4c547.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
index 0e82baf..ad557d5 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/5f7fe.json/default/TopLevel.ts
@@ -101,7 +101,7 @@ export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "custom_fields": CustomFields,
     "jsonQuery": JsonQuery,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/617e8.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/617e8.json/default/TopLevel.ts
index 432bffc..df31594 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/617e8.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/617e8.json/default/TopLevel.ts
@@ -99,7 +99,7 @@ export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "custom_fields": CustomFields,
     "jsonQuery": JsonQuery,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
index f3eea18..75f5692 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/65dec.json/default/TopLevel.ts
@@ -75,12 +75,12 @@ export class Card extends S.Class<Card>("Card")({
     "layout": Layout,
     "legalities": S.Array(LegalityElement),
     "manaCost": S.optional(S.NullOr(S.String)),
-    "mciNumber": S.optional(S.NullOr(S.String)),
+    "mciNumber": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "multiverseid": S.Int,
     "name": S.String,
     "originalText": S.String,
     "originalType": S.String,
-    "power": S.optional(S.NullOr(S.String)),
+    "power": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "printings": S.Array(S.String),
     "rarity": Rarity,
     "reserved": S.optional(S.NullOr(S.Boolean)),
@@ -88,7 +88,7 @@ export class Card extends S.Class<Card>("Card")({
     "subtypes": S.optional(S.NullOr(S.Array(S.String))),
     "supertypes": S.optional(S.NullOr(S.Array(S.String))),
     "text": S.optional(S.NullOr(S.String)),
-    "toughness": S.optional(S.NullOr(S.String)),
+    "toughness": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "type": S.String,
     "types": S.Array(Type),
     "variations": S.optional(S.NullOr(S.Array(S.Int))),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6c155.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6c155.json/default/TopLevel.ts
index 2ed1da4..3e07156 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6c155.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6c155.json/default/TopLevel.ts
@@ -22,10 +22,10 @@ export class Component extends S.Class<Component>("Component")({
 export class Result extends S.Class<Result>("Result")({
     "attachment": S.Array(S.Any),
     "body": S.String,
-    "changed": S.String,
+    "changed": S.String.pipe(S.pattern(/^-?\d+$/)),
     "component": S.Array(Component),
-    "created": S.String,
-    "date": S.String,
+    "created": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
     "image": S.Array(S.Any),
     "location": Location,
     "teaser": S.Null,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
index 27ea84f..ed6686c 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/6dec6.json/default/TopLevel.ts
@@ -9,9 +9,9 @@ export const Text = S.Literal(
 export type Text = S.Schema.Type<typeof Text>;
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -32,18 +32,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -60,17 +60,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -90,7 +90,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
index 187374d..2774d90 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/734ad.json/default/TopLevel.ts
@@ -21,8 +21,8 @@ export class Result extends S.Class<Result>("Result")({
     "be_office_lat": S.optional(S.NullOr(S.Number)),
     "be_office_lon": S.optional(S.NullOr(S.Number)),
     "be_office_phone": S.optional(S.NullOr(S.String)),
-    "be_office_post_code": S.optional(S.NullOr(S.String)),
-    "be_office_postbox": S.optional(S.NullOr(S.String)),
+    "be_office_post_code": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "be_office_postbox": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "be_office_street": S.optional(S.NullOr(S.String)),
     "be_office_town": S.optional(S.NullOr(S.String)),
     "code_of_conduct": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7681c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7681c.json/default/TopLevel.ts
index 7011ad0..70acb4e 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7681c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7681c.json/default/TopLevel.ts
@@ -46,34 +46,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7eb30.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
index 9e2c5ea..0ab54e5 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7eb30.json/default/TopLevel.ts
@@ -40,7 +40,7 @@ export class Group extends S.Class<Group>("Group")({
 }) {}
 
 export class Result extends S.Class<Result>("Result")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "english": S.String,
     "fav": S.Boolean,
     "group": Group,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
index 715bef9..bef83cc 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/7fbfb.json/default/TopLevel.ts
@@ -17,7 +17,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
@@ -28,8 +28,8 @@ export class Country extends S.Class<Country>("Country")({
 
 export class PurpleTopLevel extends S.Class<PurpleTopLevel>("PurpleTopLevel")({
     "country": Country,
-    "date": S.String,
-    "decimal": S.String,
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "decimal": S.String.pipe(S.pattern(/^-?\d+$/)),
     "indicator": Country,
     "value": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/88130.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/9929c.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a1eca.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
index ce40227..7a42f45 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/a3d8c.json/default/TopLevel.ts
@@ -25,9 +25,9 @@ export class RenderTypeConfig extends S.Class<RenderTypeConfig>("RenderTypeConfi
 export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "rdfClass": S.String,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
-    "rowIdentifier": S.String,
+    "rowIdentifier": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class License extends S.Class<License>("License")({
@@ -54,7 +54,7 @@ export class CachedContents extends S.Class<CachedContents>("CachedContents")({
     "non_null": S.Int,
     "null": S.Int,
     "smallest": S.String,
-    "sum": S.optional(S.NullOr(S.String)),
+    "sum": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "top": S.Array(Top),
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
index 182cce9..b907c29 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/ae9ca.json/default/TopLevel.ts
@@ -43,7 +43,7 @@ export class Properties extends S.Class<Properties>("Properties")({
     "lat": S.String,
     "long": S.String,
     "Maintaining Authority": MaintainingAuthority,
-    "Number": S.String,
+    "Number": S.String.pipe(S.pattern(/^-?\d+$/)),
     "Site Name": S.String,
     "Ward": Ward,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/af2d1.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
index c6ed563..ec534ae 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/af2d1.json/default/TopLevel.ts
@@ -85,7 +85,7 @@ export class FeatureProperties extends S.Class<FeatureProperties>("FeatureProper
     "documents": S.String,
     "drawing_nu": S.NullOr(S.String),
     "file_numbe": S.NullOr(S.String),
-    "folder_num": S.NullOr(S.String),
+    "folder_num": S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/))),
     "funding_ba": S.NullOr(FundingBa),
     "historic_c": S.Int,
     "inspection": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
index e8c486e..e09db88 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/b4865.json/default/TopLevel.ts
@@ -25,11 +25,11 @@ export class Geolocation extends S.Class<Geolocation>("Geolocation")({
 }) {}
 
 export class TopLevelElement extends S.Class<TopLevelElement>("TopLevelElement")({
-    ":@computed_region_cbhk_fwbd": S.optional(S.NullOr(S.String)),
-    ":@computed_region_nnqa_25f4": S.optional(S.NullOr(S.String)),
+    ":@computed_region_cbhk_fwbd": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    ":@computed_region_nnqa_25f4": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "fall": Fall,
     "geolocation": S.optional(S.NullOr(Geolocation)),
-    "id": S.String,
+    "id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mass": S.optional(S.NullOr(S.String)),
     "name": S.String,
     "nametype": Nametype,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/c3303.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/c3303.json/default/TopLevel.ts
index 46e2c67..92623fa 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/c3303.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/c3303.json/default/TopLevel.ts
@@ -43,34 +43,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
index bbb02a0..20f8013 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/c8c7e.json/default/TopLevel.ts
@@ -17,7 +17,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
@@ -28,8 +28,8 @@ export class Country extends S.Class<Country>("Country")({
 
 export class PurpleTopLevel extends S.Class<PurpleTopLevel>("PurpleTopLevel")({
     "country": Country,
-    "date": S.String,
-    "decimal": S.String,
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "decimal": S.String.pipe(S.pattern(/^-?\d+$/)),
     "indicator": Country,
     "value": S.String,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
index 632ccab..3c4c0ec 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cb0cc.json/default/TopLevel.ts
@@ -13,9 +13,9 @@ export type Category = S.Schema.Type<typeof Category>;
 
 export class Laureate extends S.Class<Laureate>("Laureate")({
     "firstname": S.String,
-    "id": S.String,
+    "id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "motivation": S.optional(S.NullOr(S.String)),
-    "share": S.String,
+    "share": S.String.pipe(S.pattern(/^-?\d+$/)),
     "surname": S.String,
 }) {}
 
@@ -23,7 +23,7 @@ export class Prize extends S.Class<Prize>("Prize")({
     "category": Category,
     "laureates": S.Array(Laureate),
     "overallMotivation": S.optional(S.NullOr(S.String)),
-    "year": S.String,
+    "year": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cda6c.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
index 9802962..926fe07 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cda6c.json/default/TopLevel.ts
@@ -17,7 +17,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
@@ -28,10 +28,10 @@ export class Country extends S.Class<Country>("Country")({
 
 export class PurpleTopLevel extends S.Class<PurpleTopLevel>("PurpleTopLevel")({
     "country": Country,
-    "date": S.String,
-    "decimal": S.String,
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "decimal": S.String.pipe(S.pattern(/^-?\d+$/)),
     "indicator": Country,
-    "value": S.String,
+    "value": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export const TopLevel = S.Array(S.Union(S.Array(PurpleTopLevel), FluffyTopLevel));
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/cf0d8.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
index 3876dc2..55e5d74 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dbfb3.json/default/TopLevel.ts
@@ -8,9 +8,9 @@ export const Text = S.Literal(
 export type Text = S.Schema.Type<typeof Text>;
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -31,18 +31,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
@@ -59,17 +59,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -89,7 +89,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
index 5c9dc0f..4caa17a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dc44f.json/default/TopLevel.ts
@@ -124,7 +124,7 @@ export class Card extends S.Class<Card>("Card")({
     "layout": Layout,
     "legalities": S.Array(LegalityElement),
     "manaCost": S.optional(S.NullOr(S.String)),
-    "mciNumber": S.optional(S.NullOr(S.String)),
+    "mciNumber": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "multiverseid": S.Int,
     "name": S.String,
     "originalText": S.optional(S.NullOr(S.String)),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
index 5c9dc0f..4caa17a 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dd1ce.json/default/TopLevel.ts
@@ -124,7 +124,7 @@ export class Card extends S.Class<Card>("Card")({
     "layout": Layout,
     "legalities": S.Array(LegalityElement),
     "manaCost": S.optional(S.NullOr(S.String)),
-    "mciNumber": S.optional(S.NullOr(S.String)),
+    "mciNumber": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "multiverseid": S.Int,
     "name": S.String,
     "originalText": S.optional(S.NullOr(S.String)),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/dec3a.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
index 0961903..b746ee2 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/dec3a.json/default/TopLevel.ts
@@ -9,7 +9,7 @@ export class Location extends S.Class<Location>("Location")({
     "mobile_number": S.String,
     "phone_number": S.String,
     "phone_number_extension": S.String,
-    "postal_code": S.String,
+    "postal_code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "sub_premise": S.Null,
     "thoroughfare": S.String,
 }) {}
@@ -23,15 +23,15 @@ export class Result extends S.Class<Result>("Result")({
     "about_office": S.String,
     "application_process": S.String,
     "body": S.String,
-    "changed": S.String,
-    "created": S.String,
+    "changed": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "created": S.String.pipe(S.pattern(/^-?\d+$/)),
     "deadline": S.Null,
     "hiring_office": S.Null,
     "hiring_org": HiringOrg,
     "job_id": S.Null,
     "language": S.String,
     "location": Location,
-    "num_positions": S.String,
+    "num_positions": S.String.pipe(S.pattern(/^-?\d+$/)),
     "position": S.String,
     "practice_area": S.String,
     "qualifications": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
index 6698bdd..182f6d1 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/df957.json/default/TopLevel.ts
@@ -2,9 +2,9 @@ import * as S from "effect/Schema";
 
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -25,18 +25,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -53,17 +53,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -83,7 +83,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
index 4b95bbd..00d7935 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e0ac7.json/default/TopLevel.ts
@@ -37,34 +37,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
index 0aad7c1..f206f92 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e2915.json/default/TopLevel.ts
@@ -7,9 +7,9 @@ export const Text = S.Literal(
 export type Text = S.Schema.Type<typeof Text>;
 
 export class Wind extends S.Class<Wind>("Wind")({
-    "chill": S.String,
-    "direction": S.String,
-    "speed": S.String,
+    "chill": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "direction": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "speed": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Units extends S.Class<Units>("Units")({
@@ -30,18 +30,18 @@ export class Guid extends S.Class<Guid>("Guid")({
 }) {}
 
 export class Forecast extends S.Class<Forecast>("Forecast")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
     "day": S.String,
-    "high": S.String,
-    "low": S.String,
+    "high": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "low": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": Text,
 }) {}
 
 export class Condition extends S.Class<Condition>("Condition")({
-    "code": S.String,
+    "code": S.String.pipe(S.pattern(/^-?\d+$/)),
     "date": S.String,
-    "temp": S.String,
+    "temp": S.String.pipe(S.pattern(/^-?\d+$/)),
     "text": S.String,
 }) {}
 
@@ -58,17 +58,17 @@ export class Item extends S.Class<Item>("Item")({
 }) {}
 
 export class Image extends S.Class<Image>("Image")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "link": S.String,
     "title": S.String,
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Atmosphere extends S.Class<Atmosphere>("Atmosphere")({
-    "humidity": S.String,
+    "humidity": S.String.pipe(S.pattern(/^-?\d+$/)),
     "pressure": S.String,
-    "rising": S.String,
+    "rising": S.String.pipe(S.pattern(/^-?\d+$/)),
     "visibility": S.String,
 }) {}
 
@@ -88,7 +88,7 @@ export class Channel extends S.Class<Channel>("Channel")({
     "link": S.String,
     "location": Location,
     "title": S.String,
-    "ttl": S.String,
+    "ttl": S.String.pipe(S.pattern(/^-?\d+$/)),
     "units": Units,
     "wind": Wind,
 }) {}
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e53b5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
index 36eb66b..23416a3 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e53b5.json/default/TopLevel.ts
@@ -17,7 +17,7 @@ export type Value = S.Schema.Type<typeof Value>;
 export class FluffyTopLevel extends S.Class<FluffyTopLevel>("FluffyTopLevel")({
     "page": S.Int,
     "pages": S.Int,
-    "per_page": S.String,
+    "per_page": S.String.pipe(S.pattern(/^-?\d+$/)),
     "total": S.Int,
 }) {}
 
@@ -28,10 +28,10 @@ export class Country extends S.Class<Country>("Country")({
 
 export class PurpleTopLevel extends S.Class<PurpleTopLevel>("PurpleTopLevel")({
     "country": Country,
-    "date": S.String,
-    "decimal": S.String,
+    "date": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "decimal": S.String.pipe(S.pattern(/^-?\d+$/)),
     "indicator": Country,
-    "value": S.String,
+    "value": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export const TopLevel = S.Array(S.Union(S.Array(PurpleTopLevel), FluffyTopLevel));
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/e8b04.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
index 511e50f..d35c314 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/e8b04.json/default/TopLevel.ts
@@ -168,7 +168,7 @@ export class AccessPoints extends S.Class<AccessPoints>("AccessPoints")({
 
 export class V1ArchivedProperties extends S.Class<V1ArchivedProperties>("V1ArchivedProperties")({
     "accessPoints": AccessPoints,
-    "blist_id": S.String,
+    "blist_id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": V1ArchivedPropertiesRenderTypeConfig,
 }) {}
 
@@ -269,7 +269,7 @@ export class TopLevelMetadata extends S.Class<TopLevelMetadata>("TopLevelMetadat
     "custom_fields": S.optional(S.NullOr(CustomFields)),
     "jsonQuery": S.optional(S.NullOr(JsonQuery)),
     "rdfClass": S.optional(S.NullOr(S.String)),
-    "rdfSubject": S.optional(S.NullOr(S.String)),
+    "rdfSubject": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "renderTypeConfig": S.optional(S.NullOr(MetadataRenderTypeConfig)),
     "richRendererConfigs": S.optional(S.NullOr(RichRendererConfigs)),
     "rowIdentifier": S.optional(S.NullOr(S.String)),
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/f6a65.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
index ad30cbc..f23a912 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/f6a65.json/default/TopLevel.ts
@@ -47,34 +47,34 @@ export class User extends S.Class<User>("User")({
 
 export class Looping extends S.Class<Looping>("Looping")({
     "mp4": S.String,
-    "mp4_size": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class FixedHeight extends S.Class<FixedHeight>("FixedHeight")({
-    "frames": S.optional(S.NullOr(S.String)),
+    "frames": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "hash": S.optional(S.NullOr(S.String)),
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.optional(S.NullOr(S.String)),
-    "mp4_size": S.optional(S.NullOr(S.String)),
-    "size": S.String,
+    "mp4_size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
+    "size": S.String.pipe(S.pattern(/^-?\d+$/)),
     "url": S.String,
     "webp": S.String,
-    "webp_size": S.String,
-    "width": S.String,
+    "webp_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class DownsizedSmall extends S.Class<DownsizedSmall>("DownsizedSmall")({
-    "height": S.String,
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
     "mp4": S.String,
-    "mp4_size": S.String,
-    "width": S.String,
+    "mp4_size": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Downsized extends S.Class<Downsized>("Downsized")({
-    "height": S.String,
-    "size": S.optional(S.NullOr(S.String)),
+    "height": S.String.pipe(S.pattern(/^-?\d+$/)),
+    "size": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "url": S.String,
-    "width": S.String,
+    "width": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class Images extends S.Class<Images>("Images")({
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/f74d5.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
index e5fb6e3..3e20e55 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/f74d5.json/default/TopLevel.ts
@@ -25,9 +25,9 @@ export class RenderTypeConfig extends S.Class<RenderTypeConfig>("RenderTypeConfi
 export class Metadata extends S.Class<Metadata>("Metadata")({
     "availableDisplayTypes": S.Array(S.String),
     "rdfClass": S.String,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
-    "rowIdentifier": S.String,
+    "rowIdentifier": S.String.pipe(S.pattern(/^-?\d+$/)),
 }) {}
 
 export class License extends S.Class<License>("License")({
@@ -54,7 +54,7 @@ export class CachedContents extends S.Class<CachedContents>("CachedContents")({
     "non_null": S.Int,
     "null": S.Int,
     "smallest": S.String,
-    "sum": S.optional(S.NullOr(S.String)),
+    "sum": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "top": S.Array(Top),
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/misc/fcca3.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
index 7a7cdfd..5d1d434 100644
--- a/base/typescript-effect-schema/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/misc/fcca3.json/default/TopLevel.ts
@@ -122,7 +122,7 @@ export class ViewMetadata extends S.Class<ViewMetadata>("ViewMetadata")({
     "custom_fields": CustomFields,
     "filterCondition": FilterCondition,
     "jsonQuery": JsonQuery,
-    "rdfSubject": S.String,
+    "rdfSubject": S.String.pipe(S.pattern(/^-?\d+$/)),
     "renderTypeConfig": RenderTypeConfig,
     "rowLabel": S.String,
 }) {}
@@ -150,7 +150,7 @@ export class CachedContents extends S.Class<CachedContents>("CachedContents")({
     "non_null": S.Int,
     "null": S.Int,
     "smallest": S.String,
-    "sum": S.optional(S.NullOr(S.String)),
+    "sum": S.optional(S.NullOr(S.String.pipe(S.pattern(/^-?\d+$/)))),
     "top": S.Array(Top),
 }) {}
 
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/blns-object.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
index 952f923..fc09a2b 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/blns-object.json/default/TopLevel.ts
@@ -366,7 +366,7 @@ export class A extends S.Class<A>("A")({
     "-0": S.String,
     "0,00": S.String,
     "0.0/0.0": S.String,
-    "1": S.String,
+    "1": S.String.pipe(S.pattern(/^-?\d+$/)),
     "1'000'000.00": S.String,
     "1E02": S.String,
     "';alert(123);t='": S.String,
@@ -487,7 +487,7 @@ export class A extends S.Class<A>("A")({
     "perl -e 'print \"<IMG SRC=java\\0script:alert(\\\"XSS\\\")>\";' > out": S.String,
     "PRN": S.String,
     "'": S.String,
-    "0": S.String,
+    "0": S.String.pipe(S.pattern(/^-?\d+$/)),
     "\u2066test\u2067": S.String,
     "RomansInSussex.co.uk": S.String,
     "%s": S.String,
@@ -539,7 +539,7 @@ export class A extends S.Class<A>("A")({
     "0,0/0,0": S.String,
     "00˙Ɩ$-": S.String,
     "0x0": S.String,
-    "-1": S.String,
+    "-1": S.String.pipe(S.pattern(/^-?\d+$/)),
     "1/0": S.String,
     "1.00": S.String,
     "1.0/0.0": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
index 765e36c..edbfaa7 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/bug855-short.json/default/TopLevel.ts
@@ -2,7 +2,7 @@ import * as S from "effect/Schema";
 
 
 export class TopLevelValue extends S.Class<TopLevelValue>("TopLevelValue")({
-    "channel_id": S.String,
+    "channel_id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "channel_name": S.String,
     "code": S.String,
     "emoticon_set": S.Int,
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
index ae732a5..6a4ec1e 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/nbl-stats.json/default/TopLevel.ts
@@ -161,7 +161,7 @@ export class Pl extends S.Class<Pl>("Pl")({
     "sTwoPointersAttempted": S.Int,
     "sTwoPointersMade": S.Int,
     "sTwoPointersPercentage": S.Int,
-    "shirtNumber": S.String,
+    "shirtNumber": S.String.pipe(S.pattern(/^-?\d+$/)),
     "starter": S.Int,
 }) {}
 
@@ -239,7 +239,7 @@ export class Team extends S.Class<Team>("Team")({
 export class Othermatch extends S.Class<Othermatch>("Othermatch")({
     "clock": S.String,
     "competitionName": S.String,
-    "id": S.String,
+    "id": S.String.pipe(S.pattern(/^-?\d+$/)),
     "period": S.Int,
     "periodType": PerType,
     "team1": Team,
diff --git a/base/typescript-effect-schema/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
index e809444..07174a3 100644
--- a/base/typescript-effect-schema/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/priority/nst-test-suite.json/default/TopLevel.ts
@@ -54,7 +54,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "y_array_empty-string.json": S.Array(S.String),
     "y_array_ending_with_newline.json": S.Array(S.String),
     "y_array_false.json": S.Array(S.Boolean),
-    "y_array_heterogeneous.json": S.Array(S.Union(S.Int, S.String, Json, S.Null)),
+    "y_array_heterogeneous.json": S.Array(S.Union(S.Int, S.NumberFromString.pipe(S.int()), Json, S.Null)),
     "y_array_null.json": S.Array(S.Null),
     "y_array_with_1_and_newline.json": S.Array(S.Int),
     "y_array_with_leading_space.json": S.Array(S.Int),
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
index 731ee27..538740a 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/kitchen-sink.json/default/TopLevel.ts
@@ -7,7 +7,7 @@ export class PurplePerson extends S.Class<PurplePerson>("PurplePerson")({
 }) {}
 
 export class PersonElement extends S.Class<PersonElement>("PersonElement")({
-    "intOrString": S.Union(S.Int, S.String),
+    "intOrString": S.Union(S.Int, S.NumberFromString.pipe(S.int())),
     "name": S.String,
     "optionalValue": S.optional(S.NullOr(S.Boolean)),
 }) {}
@@ -19,7 +19,7 @@ export class DifferentThingClass extends S.Class<DifferentThingClass>("Different
 export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "booleanValue": S.Boolean,
     "dateValue": S.String,
-    "differentThings": S.Array(S.Union(S.Int, S.String, DifferentThingClass)),
+    "differentThings": S.Array(S.Union(S.Int, S.NumberFromString.pipe(S.int()), DifferentThingClass)),
     "doubleValue": S.Number,
     "intValue": S.Int,
     "mapValue": S.Record({ key: S.String, value: S.NullOr(S.Int)}),
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
index 9266ef5..ba74421 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/spotify-album.json/default/TopLevel.ts
@@ -68,7 +68,7 @@ export class TopLevel extends S.Class<TopLevel>("TopLevel")({
     "images": S.Array(Image),
     "name": S.String,
     "popularity": S.Int,
-    "release_date": S.String,
+    "release_date": S.String.pipe(S.pattern(/^-?\d+$/)),
     "release_date_precision": S.String,
     "tracks": Tracks,
     "type": S.String,
diff --git a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
index 3cedc18..1fb30ce 100644
--- a/base/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
+++ b/head/typescript-effect-schema/test/inputs/json/samples/us-senators.json/default/TopLevel.ts
@@ -92,7 +92,7 @@ export class Person extends S.Class<Person>("Person")({
     "namemod": Namemod,
     "nickname": S.String,
     "osid": S.String,
-    "pvsid": S.String,
+    "pvsid": S.String.pipe(S.pattern(/^-?\d+$/)),
     "sortname": S.String,
     "twitterid": S.NullOr(S.String),
     "youtubeid": S.NullOr(S.String),
