diff --git a/README.md b/README.md
index 2c60d2b0..70201e2a 100644
--- a/README.md
+++ b/README.md
@@ -46,6 +46,9 @@ We do however have schemas, and schemas are basically ASTs.
@traversable/arktype@0.0.3
@traversable/arktype-test@0.0.3
@traversable/arktype-types@0.0.3
+ @traversable/effect@0.0.0
+ @traversable/effect-test@0.0.0
+ @traversable/effect-types@0.0.0
@traversable/json-schema@0.0.4
@traversable/json-schema-test@0.0.4
@traversable/json-schema-types@0.0.4
@@ -84,6 +87,9 @@ flowchart TD
typebox(typebox)
zod(zod)
arktype-test(arktype-test) -.-> registry(registry)
+ effect(effect) -.-> registry(registry)
+ effect-test(effect-test) -.-> registry(registry)
+ effect-types(effect-types) -.-> registry(registry)
json(json) -.-> registry(registry)
schema(schema) -.-> registry(registry)
typebox-test(typebox-test) -.-> registry(registry)
diff --git a/bin/bump.ts b/bin/bump.ts
index 592e5505..36961c97 100755
--- a/bin/bump.ts
+++ b/bin/bump.ts
@@ -22,8 +22,8 @@ function copyPackageVersionToRootReadme() {
const INTEGRATIONS = INTEGRATIONS_VERSIONS()
const LIBS = LIB_VERSIONS()
const newReadme = fs.readFileSync(PATH.readme).toString('utf8').replaceAll(
- REG_EXP.PackageNameWithSemver, (x1, x2) => {
- const [, pkgNameWithVersion] = x1.split('/')
+ REG_EXP.PackageNameWithSemver, (x) => {
+ const [, pkgNameWithVersion] = x.split('/')
const [pkgName] = pkgNameWithVersion.split('@')
const [, integrationVersion] = INTEGRATIONS.find(([libName]) => libName === pkgName) || []
const [, libVersion] = LIBS.find(([libName]) => libName === pkgName) || []
diff --git a/config/__generated__/package-list.ts b/config/__generated__/package-list.ts
index e032d176..ed30451f 100644
--- a/config/__generated__/package-list.ts
+++ b/config/__generated__/package-list.ts
@@ -2,6 +2,9 @@ export const PACKAGES = [
"packages/arktype",
"packages/arktype-test",
"packages/arktype-types",
+ "packages/effect",
+ "packages/effect-test",
+ "packages/effect-types",
"packages/json",
"packages/json-schema",
"packages/json-schema-test",
diff --git a/packages/effect-test/README.md b/packages/effect-test/README.md
new file mode 100644
index 00000000..a081eee9
--- /dev/null
+++ b/packages/effect-test/README.md
@@ -0,0 +1,40 @@
+
+แฏ๐๐ฟ๐ฎ๐๐ฒ๐ฟ๐๐ฎ๐ฏ๐น๐ฒ/๐ฒ๐ณ๐ณ๐ฒ๐ฐ๐-๐๐ฒ๐๐
+
+
+
+ TODO: write me
+
+
+
+
+
+
+
+
+
diff --git a/packages/effect-test/package.json b/packages/effect-test/package.json
new file mode 100644
index 00000000..070bcf7a
--- /dev/null
+++ b/packages/effect-test/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@traversable/effect-test",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect-test"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": { "include": ["**/*.ts"] },
+ "generateIndex": { "include": ["**/*.ts"] }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": { "@traversable/registry": "workspace:^" },
+ "devDependencies": { "@traversable/registry": "workspace:^" }
+}
diff --git a/packages/effect-test/src/__generated__/__manifest__.ts b/packages/effect-test/src/__generated__/__manifest__.ts
new file mode 100644
index 00000000..ee719f5a
--- /dev/null
+++ b/packages/effect-test/src/__generated__/__manifest__.ts
@@ -0,0 +1,40 @@
+export default {
+ "name": "@traversable/effect-test",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect-test"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": { "include": ["**/*.ts"] },
+ "generateIndex": { "include": ["**/*.ts"] }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": { "@traversable/registry": "workspace:^" },
+ "devDependencies": { "@traversable/registry": "workspace:^" }
+} as const
\ No newline at end of file
diff --git a/packages/effect-test/src/exports.ts b/packages/effect-test/src/exports.ts
new file mode 100644
index 00000000..04783bce
--- /dev/null
+++ b/packages/effect-test/src/exports.ts
@@ -0,0 +1 @@
+export * from './version.js'
\ No newline at end of file
diff --git a/packages/effect-test/src/index.ts b/packages/effect-test/src/index.ts
new file mode 100644
index 00000000..9fd152fb
--- /dev/null
+++ b/packages/effect-test/src/index.ts
@@ -0,0 +1 @@
+export * from './exports.js'
\ No newline at end of file
diff --git a/packages/effect-test/src/version.ts b/packages/effect-test/src/version.ts
new file mode 100644
index 00000000..660ff1ca
--- /dev/null
+++ b/packages/effect-test/src/version.ts
@@ -0,0 +1,3 @@
+import pkg from './__generated__/__manifest__.js'
+export const VERSION = `${pkg.name}@${pkg.version}` as const
+export type VERSION = typeof VERSION
diff --git a/packages/effect-test/test/version.test.ts b/packages/effect-test/test/version.test.ts
new file mode 100644
index 00000000..e4a6ea97
--- /dev/null
+++ b/packages/effect-test/test/version.test.ts
@@ -0,0 +1,10 @@
+import * as vi from 'vitest'
+import pkg from '../package.json' with { type: 'json' }
+import { VERSION } from '@traversable/effect-test'
+
+vi.describe('ใโณ๏ธใโนโนโน โฒ@traversable/effect-testโณ', () => {
+ vi.it('ใโณ๏ธใโบ โฒVERSIONโณ', () => {
+ const expected = `${pkg.name}@${pkg.version}`
+ vi.assert.equal(VERSION, expected)
+ })
+})
diff --git a/packages/effect-test/tsconfig.build.json b/packages/effect-test/tsconfig.build.json
new file mode 100644
index 00000000..aacae424
--- /dev/null
+++ b/packages/effect-test/tsconfig.build.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig.src.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/build.tsbuildinfo",
+ "types": ["node"],
+ "declarationDir": "build/dts",
+ "outDir": "build/esm",
+ "stripInternal": true
+ },
+ "references": [{ "path": "../registry" }]
+}
diff --git a/packages/effect-test/tsconfig.json b/packages/effect-test/tsconfig.json
new file mode 100644
index 00000000..2c291d21
--- /dev/null
+++ b/packages/effect-test/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": [],
+ "references": [
+ { "path": "tsconfig.src.json" },
+ { "path": "tsconfig.test.json" }
+ ]
+}
diff --git a/packages/effect-test/tsconfig.src.json b/packages/effect-test/tsconfig.src.json
new file mode 100644
index 00000000..f70f4837
--- /dev/null
+++ b/packages/effect-test/tsconfig.src.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo",
+ "rootDir": "src",
+ "types": ["node"],
+ "outDir": "build/src"
+ },
+ "references": [{ "path": "../registry" }],
+ "include": ["src"]
+}
diff --git a/packages/effect-test/tsconfig.test.json b/packages/effect-test/tsconfig.test.json
new file mode 100644
index 00000000..b298267e
--- /dev/null
+++ b/packages/effect-test/tsconfig.test.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo",
+ "rootDir": "test",
+ "types": ["node"],
+ "noEmit": true
+ },
+ "references": [{ "path": "tsconfig.src.json" }, { "path": "../registry" }],
+ "include": ["test"]
+}
diff --git a/packages/effect-test/vite.config.ts b/packages/effect-test/vite.config.ts
new file mode 100644
index 00000000..64dba4ad
--- /dev/null
+++ b/packages/effect-test/vite.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig, mergeConfig } from 'vitest/config'
+import sharedConfig from '../../vite.config.js'
+
+const localConfig = defineConfig({})
+
+export default mergeConfig(sharedConfig, localConfig)
\ No newline at end of file
diff --git a/packages/effect-types/README.md b/packages/effect-types/README.md
new file mode 100644
index 00000000..ba23cf98
--- /dev/null
+++ b/packages/effect-types/README.md
@@ -0,0 +1,40 @@
+
+แฏ๐๐ฟ๐ฎ๐๐ฒ๐ฟ๐๐ฎ๐ฏ๐น๐ฒ/๐ฒ๐ณ๐ณ๐ฒ๐ฐ๐-๐๐๐ฝ๐ฒ๐
+
+
+
+ TODO: write me
+
+
+
+
+
+
+
+
+
diff --git a/packages/effect-types/package.json b/packages/effect-types/package.json
new file mode 100644
index 00000000..4ed7541d
--- /dev/null
+++ b/packages/effect-types/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@traversable/effect-types",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect-types"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": { "include": ["**/*.ts"] },
+ "generateIndex": { "include": ["**/*.ts"] }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": { "@traversable/registry": "workspace:^" },
+ "devDependencies": { "@traversable/registry": "workspace:^" }
+}
diff --git a/packages/effect-types/src/__generated__/__manifest__.ts b/packages/effect-types/src/__generated__/__manifest__.ts
new file mode 100644
index 00000000..cbdaefd6
--- /dev/null
+++ b/packages/effect-types/src/__generated__/__manifest__.ts
@@ -0,0 +1,40 @@
+export default {
+ "name": "@traversable/effect-types",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect-types"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": { "include": ["**/*.ts"] },
+ "generateIndex": { "include": ["**/*.ts"] }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": { "@traversable/registry": "workspace:^" },
+ "devDependencies": { "@traversable/registry": "workspace:^" }
+} as const
\ No newline at end of file
diff --git a/packages/effect-types/src/exports.ts b/packages/effect-types/src/exports.ts
new file mode 100644
index 00000000..04783bce
--- /dev/null
+++ b/packages/effect-types/src/exports.ts
@@ -0,0 +1 @@
+export * from './version.js'
\ No newline at end of file
diff --git a/packages/effect-types/src/index.ts b/packages/effect-types/src/index.ts
new file mode 100644
index 00000000..9fd152fb
--- /dev/null
+++ b/packages/effect-types/src/index.ts
@@ -0,0 +1 @@
+export * from './exports.js'
\ No newline at end of file
diff --git a/packages/effect-types/src/version.ts b/packages/effect-types/src/version.ts
new file mode 100644
index 00000000..660ff1ca
--- /dev/null
+++ b/packages/effect-types/src/version.ts
@@ -0,0 +1,3 @@
+import pkg from './__generated__/__manifest__.js'
+export const VERSION = `${pkg.name}@${pkg.version}` as const
+export type VERSION = typeof VERSION
diff --git a/packages/effect-types/test/version.test.ts b/packages/effect-types/test/version.test.ts
new file mode 100644
index 00000000..18a2b597
--- /dev/null
+++ b/packages/effect-types/test/version.test.ts
@@ -0,0 +1,10 @@
+import * as vi from 'vitest'
+import pkg from '../package.json' with { type: 'json' }
+import { VERSION } from '@traversable/effect-types'
+
+vi.describe('ใโณ๏ธใโนโนโน โฒ@traversable/effect-typesโณ', () => {
+ vi.it('ใโณ๏ธใโบ โฒVERSIONโณ', () => {
+ const expected = `${pkg.name}@${pkg.version}`
+ vi.assert.equal(VERSION, expected)
+ })
+})
diff --git a/packages/effect-types/tsconfig.build.json b/packages/effect-types/tsconfig.build.json
new file mode 100644
index 00000000..aacae424
--- /dev/null
+++ b/packages/effect-types/tsconfig.build.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig.src.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/build.tsbuildinfo",
+ "types": ["node"],
+ "declarationDir": "build/dts",
+ "outDir": "build/esm",
+ "stripInternal": true
+ },
+ "references": [{ "path": "../registry" }]
+}
diff --git a/packages/effect-types/tsconfig.json b/packages/effect-types/tsconfig.json
new file mode 100644
index 00000000..2c291d21
--- /dev/null
+++ b/packages/effect-types/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": [],
+ "references": [
+ { "path": "tsconfig.src.json" },
+ { "path": "tsconfig.test.json" }
+ ]
+}
diff --git a/packages/effect-types/tsconfig.src.json b/packages/effect-types/tsconfig.src.json
new file mode 100644
index 00000000..f70f4837
--- /dev/null
+++ b/packages/effect-types/tsconfig.src.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo",
+ "rootDir": "src",
+ "types": ["node"],
+ "outDir": "build/src"
+ },
+ "references": [{ "path": "../registry" }],
+ "include": ["src"]
+}
diff --git a/packages/effect-types/tsconfig.test.json b/packages/effect-types/tsconfig.test.json
new file mode 100644
index 00000000..b298267e
--- /dev/null
+++ b/packages/effect-types/tsconfig.test.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo",
+ "rootDir": "test",
+ "types": ["node"],
+ "noEmit": true
+ },
+ "references": [{ "path": "tsconfig.src.json" }, { "path": "../registry" }],
+ "include": ["test"]
+}
diff --git a/packages/effect-types/vite.config.ts b/packages/effect-types/vite.config.ts
new file mode 100644
index 00000000..64dba4ad
--- /dev/null
+++ b/packages/effect-types/vite.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig, mergeConfig } from 'vitest/config'
+import sharedConfig from '../../vite.config.js'
+
+const localConfig = defineConfig({})
+
+export default mergeConfig(sharedConfig, localConfig)
\ No newline at end of file
diff --git a/packages/effect/README.md b/packages/effect/README.md
new file mode 100644
index 00000000..0824cc8d
--- /dev/null
+++ b/packages/effect/README.md
@@ -0,0 +1,40 @@
+
+แฏ๐๐ฟ๐ฎ๐๐ฒ๐ฟ๐๐ฎ๐ฏ๐น๐ฒ/๐ฒ๐ณ๐ณ๐ฒ๐ฐ๐
+
+
+
+ TODO: write me
+
+
+
+
+
+
+
+
+
diff --git a/packages/effect/package.json b/packages/effect/package.json
new file mode 100644
index 00000000..ea1b3755
--- /dev/null
+++ b/packages/effect/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "@traversable/effect",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": {
+ "include": [
+ "**/*.ts"
+ ]
+ },
+ "generateIndex": {
+ "include": [
+ "**/*.ts"
+ ]
+ }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": {
+ "@traversable/registry": "workspace:^"
+ },
+ "devDependencies": {
+ "@traversable/registry": "workspace:^",
+ "effect": "^3.10.14"
+ }
+}
diff --git a/packages/effect/src/__generated__/__manifest__.ts b/packages/effect/src/__generated__/__manifest__.ts
new file mode 100644
index 00000000..086fd80e
--- /dev/null
+++ b/packages/effect/src/__generated__/__manifest__.ts
@@ -0,0 +1,49 @@
+export default {
+ "name": "@traversable/effect",
+ "type": "module",
+ "version": "0.0.0",
+ "private": false,
+ "description": "",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/traversable/schema.git",
+ "directory": "packages/effect"
+ },
+ "bugs": {
+ "url": "https://github.com/traversable/schema/issues",
+ "email": "ahrjarrett@gmail.com"
+ },
+ "@traversable": {
+ "generateExports": {
+ "include": ["**/*.ts"]
+ },
+ "generateIndex": {
+ "include": ["**/*.ts"]
+ }
+ },
+ "publishConfig": {
+ "access": "public",
+ "directory": "dist",
+ "registry": "https://registry.npmjs.org"
+ },
+ "scripts": {
+ "bench": "echo NOTHING TO BENCH",
+ "build": "pnpm build:esm && pnpm build:cjs && pnpm build:annotate",
+ "build:annotate": "babel build --plugins annotate-pure-calls --out-dir build --source-maps",
+ "build:esm": "tsc -b tsconfig.build.json",
+ "build:cjs": "babel build/esm --plugins @babel/transform-export-namespace-from --plugins @babel/transform-modules-commonjs --out-dir build/cjs --source-maps",
+ "check": "tsc -b tsconfig.json",
+ "clean": "pnpm run \"/^clean:.*/\"",
+ "clean:build": "rm -rf .tsbuildinfo dist build",
+ "clean:deps": "rm -rf node_modules",
+ "test": "vitest"
+ },
+ "peerDependencies": {
+ "@traversable/registry": "workspace:^"
+ },
+ "devDependencies": {
+ "@traversable/registry": "workspace:^",
+ "effect": "^3.10.14"
+ }
+} as const
\ No newline at end of file
diff --git a/packages/effect/src/exports.ts b/packages/effect/src/exports.ts
new file mode 100644
index 00000000..04783bce
--- /dev/null
+++ b/packages/effect/src/exports.ts
@@ -0,0 +1 @@
+export * from './version.js'
\ No newline at end of file
diff --git a/packages/effect/src/index.ts b/packages/effect/src/index.ts
new file mode 100644
index 00000000..9fd152fb
--- /dev/null
+++ b/packages/effect/src/index.ts
@@ -0,0 +1 @@
+export * from './exports.js'
\ No newline at end of file
diff --git a/packages/effect/src/version.ts b/packages/effect/src/version.ts
new file mode 100644
index 00000000..660ff1ca
--- /dev/null
+++ b/packages/effect/src/version.ts
@@ -0,0 +1,3 @@
+import pkg from './__generated__/__manifest__.js'
+export const VERSION = `${pkg.name}@${pkg.version}` as const
+export type VERSION = typeof VERSION
diff --git a/packages/effect/test/version.test.ts b/packages/effect/test/version.test.ts
new file mode 100644
index 00000000..108ec621
--- /dev/null
+++ b/packages/effect/test/version.test.ts
@@ -0,0 +1,10 @@
+import * as vi from 'vitest'
+import pkg from '../package.json' with { type: 'json' }
+import { VERSION } from '@traversable/effect'
+
+vi.describe('ใโณ๏ธใโนโนโน โฒ@traversable/effectโณ', () => {
+ vi.it('ใโณ๏ธใโบ โฒVERSIONโณ', () => {
+ const expected = `${pkg.name}@${pkg.version}`
+ vi.assert.equal(VERSION, expected)
+ })
+})
diff --git a/packages/effect/tsconfig.build.json b/packages/effect/tsconfig.build.json
new file mode 100644
index 00000000..aacae424
--- /dev/null
+++ b/packages/effect/tsconfig.build.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig.src.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/build.tsbuildinfo",
+ "types": ["node"],
+ "declarationDir": "build/dts",
+ "outDir": "build/esm",
+ "stripInternal": true
+ },
+ "references": [{ "path": "../registry" }]
+}
diff --git a/packages/effect/tsconfig.json b/packages/effect/tsconfig.json
new file mode 100644
index 00000000..2c291d21
--- /dev/null
+++ b/packages/effect/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": [],
+ "references": [
+ { "path": "tsconfig.src.json" },
+ { "path": "tsconfig.test.json" }
+ ]
+}
diff --git a/packages/effect/tsconfig.src.json b/packages/effect/tsconfig.src.json
new file mode 100644
index 00000000..f70f4837
--- /dev/null
+++ b/packages/effect/tsconfig.src.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/src.tsbuildinfo",
+ "rootDir": "src",
+ "types": ["node"],
+ "outDir": "build/src"
+ },
+ "references": [{ "path": "../registry" }],
+ "include": ["src"]
+}
diff --git a/packages/effect/tsconfig.test.json b/packages/effect/tsconfig.test.json
new file mode 100644
index 00000000..b298267e
--- /dev/null
+++ b/packages/effect/tsconfig.test.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": ".tsbuildinfo/test.tsbuildinfo",
+ "rootDir": "test",
+ "types": ["node"],
+ "noEmit": true
+ },
+ "references": [{ "path": "tsconfig.src.json" }, { "path": "../registry" }],
+ "include": ["test"]
+}
diff --git a/packages/effect/vite.config.ts b/packages/effect/vite.config.ts
new file mode 100644
index 00000000..64dba4ad
--- /dev/null
+++ b/packages/effect/vite.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig, mergeConfig } from 'vitest/config'
+import sharedConfig from '../../vite.config.js'
+
+const localConfig = defineConfig({})
+
+export default mergeConfig(sharedConfig, localConfig)
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index dd8894f0..d6df27de 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -294,6 +294,30 @@ importers:
version: 2.1.20
publishDirectory: dist
+ packages/effect:
+ devDependencies:
+ '@traversable/registry':
+ specifier: workspace:^
+ version: link:../registry/dist
+ effect:
+ specifier: ^3.10.14
+ version: 3.16.12
+ publishDirectory: dist
+
+ packages/effect-test:
+ devDependencies:
+ '@traversable/registry':
+ specifier: workspace:^
+ version: link:../registry/dist
+ publishDirectory: dist
+
+ packages/effect-types:
+ devDependencies:
+ '@traversable/registry':
+ specifier: workspace:^
+ version: link:../registry/dist
+ publishDirectory: dist
+
packages/json:
dependencies:
fast-check:
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 08edf1fa..a5865408 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -34,6 +34,12 @@
"@traversable/arktype-types": ["packages/arktype-types/src/index.js"],
"@traversable/arktype-types/*": ["packages/arktype-types/*.js"],
"@traversable/arktype/*": ["packages/arktype/*.js"],
+ "@traversable/effect": ["packages/effect/src/index.js"],
+ "@traversable/effect-test": ["packages/effect-test/src/index.js"],
+ "@traversable/effect-test/*": ["packages/effect-test/*.js"],
+ "@traversable/effect-types": ["packages/effect-types/src/index.js"],
+ "@traversable/effect-types/*": ["packages/effect-types/*.js"],
+ "@traversable/effect/*": ["packages/effect/*.js"],
"@traversable/json": ["packages/json/src/index.js"],
"@traversable/json-schema": ["packages/json-schema/src/index.js"],
"@traversable/json-schema-test": [
@@ -53,8 +59,12 @@
"@traversable/schema-codec/*": ["packages/schema-codec/src/*.js"],
"@traversable/schema-compiler": ["packages/schema-compiler/src/index.js"],
"@traversable/schema-compiler/*": ["packages/schema-compiler/*.js"],
- "@traversable/schema-deep-equal": ["packages/schema-deep-equal/src/index.js"],
- "@traversable/schema-deep-equal/*": ["packages/schema-deep-equal/src/*.js"],
+ "@traversable/schema-deep-equal": [
+ "packages/schema-deep-equal/src/index.js"
+ ],
+ "@traversable/schema-deep-equal/*": [
+ "packages/schema-deep-equal/src/*.js"
+ ],
"@traversable/schema-errors": ["packages/schema-errors/src/index.js"],
"@traversable/schema-errors/*": ["packages/schema-errors/*.js"],
"@traversable/schema-seed": ["packages/schema-seed/src/index.js"],
@@ -69,8 +79,12 @@
"packages/schema-to-string/src/index.js"
],
"@traversable/schema-to-string/*": ["packages/schema-to-string/src/*.js"],
- "@traversable/schema-to-validator": ["packages/schema-to-validator/src/index.js"],
- "@traversable/schema-to-validator/*": ["packages/schema-to-validator/src/*.js"],
+ "@traversable/schema-to-validator": [
+ "packages/schema-to-validator/src/index.js"
+ ],
+ "@traversable/schema-to-validator/*": [
+ "packages/schema-to-validator/src/*.js"
+ ],
"@traversable/schema-valibot-adapter": [
"packages/schema-valibot-adapter/src/index.js"
],
diff --git a/tsconfig.build.json b/tsconfig.build.json
index e37798c1..f6f770e4 100644
--- a/tsconfig.build.json
+++ b/tsconfig.build.json
@@ -5,6 +5,9 @@
{ "path": "packages/arktype-test/tsconfig.build.json" },
{ "path": "packages/arktype-types/tsconfig.build.json" },
{ "path": "packages/arktype/tsconfig.build.json" },
+ { "path": "packages/effect-test/tsconfig.build.json" },
+ { "path": "packages/effect-types/tsconfig.build.json" },
+ { "path": "packages/effect/tsconfig.build.json" },
{ "path": "packages/json-schema-test/tsconfig.build.json" },
{ "path": "packages/json-schema-types/tsconfig.build.json" },
{ "path": "packages/json-schema/tsconfig.build.json" },
diff --git a/tsconfig.json b/tsconfig.json
index fca3b8c4..de1facbf 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -5,6 +5,9 @@
{ "path": "packages/arktype" },
{ "path": "packages/arktype-test" },
{ "path": "packages/arktype-types" },
+ { "path": "packages/effect" },
+ { "path": "packages/effect-test" },
+ { "path": "packages/effect-types" },
{ "path": "packages/json" },
{ "path": "packages/json-schema" },
{ "path": "packages/json-schema-test" },