From 8bacca4b3c168be92b749209bdd441febff0f5a8 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Tue, 9 Sep 2025 01:03:57 +0500 Subject: [PATCH 1/8] docs: add ecosystem section to meta.json --- ark/docs/content/docs/ecosystem/index.mdx | 34 +++++++++++++++++++++++ ark/docs/content/docs/ecosystem/meta.json | 6 ++++ ark/docs/content/docs/meta.json | 1 + 3 files changed, 41 insertions(+) create mode 100644 ark/docs/content/docs/ecosystem/index.mdx create mode 100644 ark/docs/content/docs/ecosystem/meta.json diff --git a/ark/docs/content/docs/ecosystem/index.mdx b/ark/docs/content/docs/ecosystem/index.mdx new file mode 100644 index 0000000000..f24f9eeb99 --- /dev/null +++ b/ark/docs/content/docs/ecosystem/index.mdx @@ -0,0 +1,34 @@ +--- +title: Ecosystem +--- + +### ArkEnv + +[ArkEnv](https://arkenv.js.org) brings the power of ArkType to your environment variables. + +Define an ArkType schema, pull values from your environment or config source, validate them, apply type conversions and transformations, and end up with a fully typesafe, ready-to-use `env` object. + +Inspired by tools like [T3 Env](https://env.t3.gg) but tailored specifically for ArkType, ArkEnv also adds keywords like `string.host` and `number.port` for env-specific use cases. + +```ts +// @noErrors +import { createEnv } from "arkenv" + +const envSchema = type({ + HOST: "string.host", + PORT: "number.port", + NODE_ENV: "'development' | 'production' | 'test' = 'development'" +}) + +const env = createEnv({ + HOST: "string.host", + PORT: "number.port", + NODE_ENV: "'development' | 'production' | 'test' = 'development'" +}) + +// Automatically validate and parse process.env +// TypeScript knows the ✨exact✨ types! +console.log(env.HOST) // (property) HOST: string +console.log(env.PORT) // (property) PORT: number +console.log(env.NODE_ENV) // (property) NODE_ENV: "development" | "production" | "test" +``` diff --git a/ark/docs/content/docs/ecosystem/meta.json b/ark/docs/content/docs/ecosystem/meta.json new file mode 100644 index 0000000000..52d156fcc0 --- /dev/null +++ b/ark/docs/content/docs/ecosystem/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Ecosystem", + "pages": [ + "[ArkEnv](/docs/ecosystem#arkenv)" + ] +} diff --git a/ark/docs/content/docs/meta.json b/ark/docs/content/docs/meta.json index 5be9f669f8..262ca64586 100644 --- a/ark/docs/content/docs/meta.json +++ b/ark/docs/content/docs/meta.json @@ -9,6 +9,7 @@ "type-api", "traversal-api", "integrations", + "ecosystem", "scopes", "generics", "blog", From 301552aaa8a2f3f7a6b590e2c26577b40cfc3e47 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Tue, 9 Sep 2025 01:06:54 +0500 Subject: [PATCH 2/8] docs: streamline pages array in meta.json --- ark/docs/content/docs/ecosystem/meta.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ark/docs/content/docs/ecosystem/meta.json b/ark/docs/content/docs/ecosystem/meta.json index 52d156fcc0..1a02283096 100644 --- a/ark/docs/content/docs/ecosystem/meta.json +++ b/ark/docs/content/docs/ecosystem/meta.json @@ -1,6 +1,4 @@ { "title": "Ecosystem", - "pages": [ - "[ArkEnv](/docs/ecosystem#arkenv)" - ] + "pages": ["[ArkEnv](/docs/ecosystem#arkenv)"] } From 834668c116da42ca9c310ca66143f61be9f4a3b4 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Tue, 9 Sep 2025 23:39:47 +0500 Subject: [PATCH 3/8] docs: remove unused envSchema definition from ecosystem index --- ark/docs/content/docs/ecosystem/index.mdx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ark/docs/content/docs/ecosystem/index.mdx b/ark/docs/content/docs/ecosystem/index.mdx index f24f9eeb99..191626017f 100644 --- a/ark/docs/content/docs/ecosystem/index.mdx +++ b/ark/docs/content/docs/ecosystem/index.mdx @@ -14,12 +14,6 @@ Inspired by tools like [T3 Env](https://env.t3.gg) but tailored specifically for // @noErrors import { createEnv } from "arkenv" -const envSchema = type({ - HOST: "string.host", - PORT: "number.port", - NODE_ENV: "'development' | 'production' | 'test' = 'development'" -}) - const env = createEnv({ HOST: "string.host", PORT: "number.port", From fea6c582341cda388b496e157722eb027bec9536 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Fri, 12 Sep 2025 16:35:54 +0500 Subject: [PATCH 4/8] docs: update ArkEnv import and add 'New' icon support --- ark/docs/content/docs/ecosystem/index.mdx | 4 ++-- ark/docs/content/docs/ecosystem/meta.json | 1 + ark/docs/lib/source.tsx | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ark/docs/content/docs/ecosystem/index.mdx b/ark/docs/content/docs/ecosystem/index.mdx index 191626017f..ee60ddd50e 100644 --- a/ark/docs/content/docs/ecosystem/index.mdx +++ b/ark/docs/content/docs/ecosystem/index.mdx @@ -12,9 +12,9 @@ Inspired by tools like [T3 Env](https://env.t3.gg) but tailored specifically for ```ts // @noErrors -import { createEnv } from "arkenv" +import arkenv from "arkenv" -const env = createEnv({ +const env = arkenv({ HOST: "string.host", PORT: "number.port", NODE_ENV: "'development' | 'production' | 'test' = 'development'" diff --git a/ark/docs/content/docs/ecosystem/meta.json b/ark/docs/content/docs/ecosystem/meta.json index 1a02283096..3fe261b355 100644 --- a/ark/docs/content/docs/ecosystem/meta.json +++ b/ark/docs/content/docs/ecosystem/meta.json @@ -1,4 +1,5 @@ { "title": "Ecosystem", + "icon": "New", "pages": ["[ArkEnv](/docs/ecosystem#arkenv)"] } diff --git a/ark/docs/lib/source.tsx b/ark/docs/lib/source.tsx index c061b0ddcd..778bbf3f78 100644 --- a/ark/docs/lib/source.tsx +++ b/ark/docs/lib/source.tsx @@ -6,7 +6,7 @@ import { createElement } from "react" import { docs } from "../.source/index.ts" import { Badge } from "../components/Badge.tsx" -export type IconName = keyof typeof icons | "Advanced" +export type IconName = keyof typeof icons | "Advanced" | "New" export const source = loader({ baseUrl: "/docs", @@ -29,6 +29,20 @@ export const source = loader({ ) } + if (name === "New") { + return ( + + new + + ) + } throw new Error(`${name} is not a valid icon`) } From a2285a6e9422c9b4cc08b744a2ebdf1cf54e7b99 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Sun, 14 Sep 2025 20:39:20 +0500 Subject: [PATCH 5/8] docs: update README to reflect ArkType's role as a TypeScript validator and enhance feature description --- ark/extension/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ark/extension/README.md b/ark/extension/README.md index 19e42a1c79..92d63bfe1b 100644 --- a/ark/extension/README.md +++ b/ark/extension/README.md @@ -4,11 +4,11 @@
-[ArkType](https://arktype.io) syntax highlighting and theme⛵ +[ArkType](https://arktype.io) syntax highlighting and ErrorLens ⛵
-We're building a 1:1 validator for TypeScript! Check out our core project [on GitHub](https://github.com/arktypeio/arktype)! +ArkType is TypeScript's 1:1 validator, optimized from editor to runtime. Check out our core project [on GitHub](https://github.com/arktypeio/arktype)! ## Features From c6c0e4ccf9e1f8a7c49063216a332f6e1f5efc44 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Mon, 15 Sep 2025 00:53:24 +0500 Subject: [PATCH 6/8] fix: correct typo in default value error message for clarity --- ark/type/parser/shift/operator/default.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ark/type/parser/shift/operator/default.ts b/ark/type/parser/shift/operator/default.ts index 96677d09ed..dcbf710f2c 100644 --- a/ark/type/parser/shift/operator/default.ts +++ b/ark/type/parser/shift/operator/default.ts @@ -48,7 +48,7 @@ export type parseDefault = export const writeNonLiteralDefaultMessage = ( defaultDef: defaultDef ): writeNonLiteralDefaultMessage => - `Default value '${defaultDef}' must a literal value` + `Default value '${defaultDef}' must be a literal value` export type writeNonLiteralDefaultMessage = - `Default value '${defaultDef}' must a literal value` + `Default value '${defaultDef}' must be a literal value` From febf07472a3ccd114ce9a18fb30c5ef36f625204 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Mon, 15 Sep 2025 00:56:52 +0500 Subject: [PATCH 7/8] Revert "docs: update README to reflect ArkType's role as a TypeScript validator and enhance feature description" This reverts commit a2285a6e9422c9b4cc08b744a2ebdf1cf54e7b99. --- ark/extension/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ark/extension/README.md b/ark/extension/README.md index 92d63bfe1b..19e42a1c79 100644 --- a/ark/extension/README.md +++ b/ark/extension/README.md @@ -4,11 +4,11 @@
-[ArkType](https://arktype.io) syntax highlighting and ErrorLens ⛵ +[ArkType](https://arktype.io) syntax highlighting and theme⛵
-ArkType is TypeScript's 1:1 validator, optimized from editor to runtime. Check out our core project [on GitHub](https://github.com/arktypeio/arktype)! +We're building a 1:1 validator for TypeScript! Check out our core project [on GitHub](https://github.com/arktypeio/arktype)! ## Features From 3d114da3e164c3c153e181c234557d05beda4010 Mon Sep 17 00:00:00 2001 From: Yam Borodetsky Date: Mon, 15 Sep 2025 00:57:03 +0500 Subject: [PATCH 8/8] Revert "docs: update ArkEnv import and add 'New' icon support" This reverts commit fea6c582341cda388b496e157722eb027bec9536. --- ark/docs/content/docs/ecosystem/index.mdx | 4 ++-- ark/docs/content/docs/ecosystem/meta.json | 1 - ark/docs/lib/source.tsx | 16 +--------------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/ark/docs/content/docs/ecosystem/index.mdx b/ark/docs/content/docs/ecosystem/index.mdx index ee60ddd50e..191626017f 100644 --- a/ark/docs/content/docs/ecosystem/index.mdx +++ b/ark/docs/content/docs/ecosystem/index.mdx @@ -12,9 +12,9 @@ Inspired by tools like [T3 Env](https://env.t3.gg) but tailored specifically for ```ts // @noErrors -import arkenv from "arkenv" +import { createEnv } from "arkenv" -const env = arkenv({ +const env = createEnv({ HOST: "string.host", PORT: "number.port", NODE_ENV: "'development' | 'production' | 'test' = 'development'" diff --git a/ark/docs/content/docs/ecosystem/meta.json b/ark/docs/content/docs/ecosystem/meta.json index 3fe261b355..1a02283096 100644 --- a/ark/docs/content/docs/ecosystem/meta.json +++ b/ark/docs/content/docs/ecosystem/meta.json @@ -1,5 +1,4 @@ { "title": "Ecosystem", - "icon": "New", "pages": ["[ArkEnv](/docs/ecosystem#arkenv)"] } diff --git a/ark/docs/lib/source.tsx b/ark/docs/lib/source.tsx index 778bbf3f78..c061b0ddcd 100644 --- a/ark/docs/lib/source.tsx +++ b/ark/docs/lib/source.tsx @@ -6,7 +6,7 @@ import { createElement } from "react" import { docs } from "../.source/index.ts" import { Badge } from "../components/Badge.tsx" -export type IconName = keyof typeof icons | "Advanced" | "New" +export type IconName = keyof typeof icons | "Advanced" export const source = loader({ baseUrl: "/docs", @@ -29,20 +29,6 @@ export const source = loader({ ) } - if (name === "New") { - return ( - - new - - ) - } throw new Error(`${name} is not a valid icon`) }