Repository: solidjs-community/solid-primitives
Pull request #701 (2024-09-29 12:59:51)

Rewrite build script to build all packages in one process (Removes CJS)
Rewrites build script to build all packages in one process
Similarly to how testing works
So no turborepo cashing, but it's much faster overall
5s to build all packages instead of a couple of minutes
So should be much easier for new people to fork and build locally and not have to wait so much
Also website deploys could happen on main now as the netlify build should be a lot faster

~~Proper turbo-like caching could be added later as well and be used for tests too, without sacrificing the time to build all packages.~~
`tsc -b` takes care of caching pretty much

Please run `rm -rf packages/*/dist/* .turbo packages/*/.turbo` to clear old files

This also removes CJS support

changeset-bot[bot]: ###  ⚠️  No Changeset found

Latest commit: 16b44805b8072c44770cb01a531232af2c0e33fe

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. **If these changes should result in a version bump, you need to add a changeset.**

<details><summary>This PR includes no changesets</summary>

  When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

</details>

[Click here to learn what changesets are, and how to add one](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add a changeset to this PR](https://github.com/solidjs-community/solid-primitives/new/new-build?filename=.changeset/tame-dragons-attack.md&value=---%0A%22%40solid-primitives%2Factive-element%22%3A%20patch%0A%22%40solid-primitives%2Fanalytics%22%3A%20patch%0A%22%40solid-primitives%2Faudio%22%3A%20patch%0A%22%40solid-primitives%2Fautofocus%22%3A%20patch%0A%22%40solid-primitives%2Fbounds%22%3A%20patch%0A%22%40solid-primitives%2Fbroadcast-channel%22%3A%20patch%0A%22%40solid-primitives%2Fclipboard%22%3A%20patch%0A%22%40solid-primitives%2Fconnectivity%22%3A%20patch%0A%22%40solid-primitives%2Fcontext%22%3A%20patch%0A%22%40solid-primitives%2Fcontrolled-props%22%3A%20patch%0A%22%40solid-primitives%2Fcursor%22%3A%20patch%0A%22%40solid-primitives%2Fdate%22%3A%20patch%0A---%0A%0ARewrite%20build%20script%20to%20build%20all%20packages%20in%20one%20process%20(Removes%20CJS)%0A)



Patch:
diff --git a/.changeset/ninety-glasses-hammer.md b/.changeset/ninety-glasses-hammer.md
new file mode 100644
index 00000000..4327c52b
--- /dev/null
+++ b/.changeset/ninety-glasses-hammer.md
@@ -0,0 +1,86 @@
+---
+"@solid-primitives/intersection-observer": minor
+"@solid-primitives/broadcast-channel": minor
+"@solid-primitives/mutation-observer": minor
+"@solid-primitives/controlled-props": minor
+"@solid-primitives/event-dispatcher": minor
+"@solid-primitives/transition-group": minor
+"@solid-primitives/page-visibility": minor
+"@solid-primitives/resize-observer": minor
+"@solid-primitives/signal-builders": minor
+"@solid-primitives/active-element": minor
+"@solid-primitives/event-listener": minor
+"@solid-primitives/jsx-tokenizer": minor
+"@solid-primitives/script-loader": minor
+"@solid-primitives/state-machine": minor
+"@solid-primitives/connectivity": minor
+"@solid-primitives/static-store": minor
+"@solid-primitives/destructure": minor
+"@solid-primitives/event-props": minor
+"@solid-primitives/geolocation": minor
+"@solid-primitives/filesystem": minor
+"@solid-primitives/flux-store": minor
+"@solid-primitives/fullscreen": minor
+"@solid-primitives/input-mask": minor
+"@solid-primitives/pagination": minor
+"@solid-primitives/permission": minor
+"@solid-primitives/analytics": minor
+"@solid-primitives/autofocus": minor
+"@solid-primitives/clipboard": minor
+"@solid-primitives/event-bus": minor
+"@solid-primitives/immutable": minor
+"@solid-primitives/lifecycle": minor
+"@solid-primitives/scheduled": minor
+"@solid-primitives/selection": minor
+"@solid-primitives/websocket": minor
+"@solid-primitives/gestures": minor
+"@solid-primitives/keyboard": minor
+"@solid-primitives/platform": minor
+"@solid-primitives/presence": minor
+"@solid-primitives/resource": minor
+"@solid-primitives/rootless": minor
+"@solid-primitives/context": minor
+"@solid-primitives/devices": minor
+"@solid-primitives/graphql": minor
+"@solid-primitives/history": minor
+"@solid-primitives/masonry": minor
+"@solid-primitives/mutable": minor
+"@solid-primitives/pointer": minor
+"@solid-primitives/promise": minor
+"@solid-primitives/storage": minor
+"@solid-primitives/trigger": minor
+"@solid-primitives/virtual": minor
+"@solid-primitives/workers": minor
+"@solid-primitives/bounds": minor
+"@solid-primitives/cursor": minor
+"@solid-primitives/marker": minor
+"@solid-primitives/scroll": minor
+"@solid-primitives/spring": minor
+"@solid-primitives/stream": minor
+"@solid-primitives/styles": minor
+"@solid-primitives/upload": minor
+"@solid-primitives/audio": minor
+"@solid-primitives/fetch": minor
+"@solid-primitives/keyed": minor
+"@solid-primitives/media": minor
+"@solid-primitives/mouse": minor
+"@solid-primitives/props": minor
+"@solid-primitives/range": minor
+"@solid-primitives/share": minor
+"@solid-primitives/start": minor
+"@solid-primitives/timer": minor
+"@solid-primitives/tween": minor
+"@solid-primitives/utils": minor
+"@solid-primitives/date": minor
+"@solid-primitives/deep": minor
+"@solid-primitives/i18n": minor
+"@solid-primitives/idle": minor
+"@solid-primitives/list": minor
+"@solid-primitives/memo": minor
+"@solid-primitives/refs": minor
+"@solid-primitives/map": minor
+"@solid-primitives/raf": minor
+"@solid-primitives/set": minor
+---
+
+Remove CJS support. The package is ESM only now.
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 58cbb791..d108569b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -23,14 +23,6 @@ jobs:
       - name: Install Dependencies
         run: pnpm i
 
-      - name: Cache turbo build setup
-        uses: actions/cache@v4
-        with:
-          path: node_modules/.cache/turbo
-          key: turbo-${{ github.sha }}
-          restore-keys: |
-            turbo-
-
       - name: Create Release Pull Request or Publish to npm
         id: changesets
         uses: changesets/action@v1
diff --git a/.gitignore b/.gitignore
index 879b66d6..6f383ce9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -164,9 +164,6 @@ temp/
 
 tsup.config.bundled*.mjs
 
-# turbo
-.turbo
-
 # vite
 vite.config.ts.js
 vitest.config.ts.timestamp-*.mjs
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..a4e493ed
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,22 @@
+
+node_modules/
+dist/
+assets
+
+# TypeScript cache
+*.tsbuildinfo
+
+.vscode
+
+# Temporary folders
+tmp/
+temp/
+_temp_*
+
+_generated
+
+.netlify
+.vinxi
+.idea
+
+tsconfig.json
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 739e1de0..d8bc7c92 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ All our primitives are meant to be consistent and sustain a level of quality. We
 9. Be focused on composition vs. isolation of logic
 10. Community voice and needs guide road map and planning
 11. Strong TypeScript support
-12. Support for both CJS and ESM
+12. ESM (no more CJS support)
 13. Solid performance!
 
 ## Basic and Compound Primitives
diff --git a/README.md b/README.md
index 5e855731..1443e256 100644
--- a/README.md
+++ b/README.md
@@ -4,8 +4,7 @@
 
 # Solid Primitives
 
-[![pnpm](https://img.shields.io/badge/maintained%20with-pnpm-cc00ff.svg?style=for-the-badge&logo=pnpm)](https://pnpm.io/)
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)<!-- INSERT-NPM-DOWNLOADS-BADGE:START -->
+[![pnpm](https://img.shields.io/badge/maintained%20with-pnpm-cc00ff.svg?style=for-the-badge&logo=pnpm)](https://pnpm.io/)<!-- INSERT-NPM-DOWNLOADS-BADGE:START -->
 [![combined-downloads](https://img.shields.io/endpoint?style=for-the-badge&url=https://combined-npm-downloads.deno.dev/@solid-primitives/utils,@solid-primitives/broadcast-channel,@solid-primitives/context,@solid-primitives/cookies,@solid-primitives/devices,@solid-primitives/event-dispatcher,@solid-primitives/event-props,@solid-primitives/fetch,@solid-primitives/filesystem,@solid-primitives/flux-store,@solid-primitives/i18n,@solid-primitives/idle,@solid-primitives/input-mask,@solid-primitives/keyed,@solid-primitives/lifecycle,@solid-primitives/list,@solid-primitives/marker,@solid-primitives/mutable,@solid-primitives/permission,@solid-primitives/platform,@solid-primitives/resource,@solid-primitives/scheduled,@solid-primitives/script-loader,@solid-primitives/selection,@solid-primitives/share,@solid-primitives/spring,@solid-primitives/state-machine,@solid-primitives/timer,@solid-primitives/transition-group,@solid-primitives/tween,@solid-primitives/websocket,@solid-primitives/workers)](https://dash.deno.com/playground/combined-npm-downloads)
 <!-- INSERT-NPM-DOWNLOADS-BADGE:END -->
 
diff --git a/package.json b/package.json
index e50ce361..29835906 100644
--- a/package.json
+++ b/package.json
@@ -12,28 +12,31 @@
   "type": "module",
   "scripts": {
     "dev": "pnpm -dir site run dev",
-    "format": "prettier --cache -w {site,packages,scripts,template}/**/*.{js,ts,json,css,tsx,jsx,md,html} --ignore-path .gitignore",
+    "format": "prettier --cache -w {site,packages,scripts,template}/**/*.{js,ts,json,css,tsx,jsx,md,html}",
     "lint:packages": "eslint --max-warnings 0 \"packages/*/src/**/*\"",
     "lint:tests": "eslint \"packages/*/test/**\" --rule \"no-only-tests/no-only-tests: error\"",
     "lint": "pnpm run \"/^lint:.*/\"",  
     "test:client": "vitest -c ./configs/vitest.config.ts",
     "test:ssr": "pnpm run test:client --mode ssr",
     "test": "pnpm run test:client && pnpm run test:ssr",
-    "build:ci": "turbo run build --filter='./packages/*'",
-    "build": "pnpm run build:ci --concurrency=50%",
+    "build": "tsx ./scripts/build.ts",
     "new-package": "tsx ./scripts/new-package.ts",
     "update-readme": "tsx ./scripts/update-readme.ts",
+    "update-tsconfigs": "tsx ./scripts/update-tsconfigs.ts",
     "measure": "tsx ./scripts/measure.ts",
     "version": "changeset version && pnpm i --no-frozen-lockfile && git add .",
-    "release": "pnpm build && changeset publish"
+    "release": "pnpm build && changeset publish",
+    "postinstall": "pnpm update-tsconfigs"
   },
   "devDependencies": {
     "@changesets/cli": "^2.27.8",
+    "@solidjs/start": "^1.0.6",
     "@types/jsdom": "^21.1.7",
     "@types/node": "^22.5.4",
     "@typescript-eslint/eslint-plugin": "^8.5.0",
     "@typescript-eslint/parser": "^8.5.0",
     "esbuild": "^0.19.11",
+    "esbuild-plugin-solid": "^0.6.0",
     "eslint": "^9.10.0",
     "eslint-plugin-eslint-comments": "^3.2.0",
     "eslint-plugin-no-only-tests": "^3.3.0",
@@ -46,18 +49,15 @@
     "rehype-slug": "^6.0.0",
     "remark-gfm": "^4.0.0",
     "solid-js": "^1.8.22",
-    "@solidjs/start": "^1.0.6",
-    "tsup": "^8.2.4",
-    "tsup-preset-solid": "^2.2.0",
     "tsx": "^4.19.1",
-    "turbo": "^1.12.5",
-    "vinxi": "^0.4.2",
-    "vite-plugin-solid": "^2.10.2",
     "typescript": "~5.6.2",
-    "valibot": "^0.20.1",
+    "vinxi": "^0.4.2",
     "vite": "5.4.4",
+    "vite-plugin-solid": "^2.10.2",
     "vitest": "^2.1.0"
   },
   "packageManager": "pnpm@9.9.0",
-  "engines": {"node": ">=20.0.0"}
+  "engines": {
+    "node": ">=20.0.0"
+  }
 }
diff --git a/packages/active-element/README.md b/packages/active-element/README.md
index 68e0fdb5..d2c2ea3b 100644
--- a/packages/active-element/README.md
+++ b/packages/active-element/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/active-element
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/active-element?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/active-element)
 [![size](https://img.shields.io/npm/v/@solid-primitives/active-element?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/active-element)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/active-element/package.json b/packages/active-element/package.json
index 9d456c65..35a3564f 100644
--- a/packages/active-element/package.json
+++ b/packages/active-element/package.json
@@ -27,7 +27,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/active-element/tsconfig.json b/packages/active-element/tsconfig.json
index 0f52db9f..b9b2b678 100644
--- a/packages/active-element/tsconfig.json
+++ b/packages/active-element/tsconfig.json
@@ -1,5 +1,19 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/analytics/README.md b/packages/analytics/README.md
index 2fcf6be9..aef1a8f5 100644
--- a/packages/analytics/README.md
+++ b/packages/analytics/README.md
@@ -12,7 +12,6 @@ Category: Utilities
 
 # @solid-primitives/analytics
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
 
 Creates a primitive for analytics management.
diff --git a/packages/analytics/package.json b/packages/analytics/package.json
index 8c07cb27..cfea620c 100644
--- a/packages/analytics/package.json
+++ b/packages/analytics/package.json
@@ -10,7 +10,6 @@
     "url": "https://github.com/solidjs-community/solid-primitives/tree/main/packages/analytics"
   },
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -18,10 +17,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/analytics/tsconfig.json
+++ b/packages/analytics/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/audio/README.md b/packages/audio/README.md
index b355e65b..1a9ac85b 100644
--- a/packages/audio/README.md
+++ b/packages/audio/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/audio
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/audio?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/audio)
 [![size](https://img.shields.io/npm/v/@solid-primitives/audio?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/audio)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/audio/package.json b/packages/audio/package.json
index 052219d1..d32d48fb 100644
--- a/packages/audio/package.json
+++ b/packages/audio/package.json
@@ -25,7 +25,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -34,10 +33,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/audio/tsconfig.json b/packages/audio/tsconfig.json
index 4082f16a..acef5da3 100644
--- a/packages/audio/tsconfig.json
+++ b/packages/audio/tsconfig.json
@@ -1,3 +1,19 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/autofocus/README.md b/packages/autofocus/README.md
index 55e2bc9e..b213b7f5 100644
--- a/packages/autofocus/README.md
+++ b/packages/autofocus/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/autofocus
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/autofocus?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/autofocus)
 [![version](https://img.shields.io/npm/v/@solid-primitives/autofocus?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/autofocus)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/autofocus/package.json b/packages/autofocus/package.json
index 0e0f0a02..6490f725 100644
--- a/packages/autofocus/package.json
+++ b/packages/autofocus/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/autofocus/tsconfig.json b/packages/autofocus/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/autofocus/tsconfig.json
+++ b/packages/autofocus/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/bounds/README.md b/packages/bounds/README.md
index 5254a556..37113eef 100644
--- a/packages/bounds/README.md
+++ b/packages/bounds/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/bounds
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/bounds?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/bounds)
 [![version](https://img.shields.io/npm/v/@solid-primitives/bounds?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/bounds)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/bounds/package.json b/packages/bounds/package.json
index 9f66342e..a360a978 100644
--- a/packages/bounds/package.json
+++ b/packages/bounds/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/bounds/tsconfig.json b/packages/bounds/tsconfig.json
index 0f52db9f..961c7e0e 100644
--- a/packages/bounds/tsconfig.json
+++ b/packages/bounds/tsconfig.json
@@ -1,5 +1,25 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../resize-observer"
+    },
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/broadcast-channel/README.md b/packages/broadcast-channel/README.md
index a0a0a3cf..fb3e2a20 100644
--- a/packages/broadcast-channel/README.md
+++ b/packages/broadcast-channel/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/broadcast-channel
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/broadcast-channel?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/broadcast-channel)
 [![version](https://img.shields.io/npm/v/@solid-primitives/broadcast-channel?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/broadcast-channel)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/broadcast-channel/package.json b/packages/broadcast-channel/package.json
index 4cab7710..88a87efe 100644
--- a/packages/broadcast-channel/package.json
+++ b/packages/broadcast-channel/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/broadcast-channel/tsconfig.json b/packages/broadcast-channel/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/broadcast-channel/tsconfig.json
+++ b/packages/broadcast-channel/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/clipboard/README.md b/packages/clipboard/README.md
index 92ec5f04..f805e89f 100644
--- a/packages/clipboard/README.md
+++ b/packages/clipboard/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/clipboard
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/clipboard?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/clipboard)
 [![size](https://img.shields.io/npm/v/@solid-primitives/clipboard?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/clipboard)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/clipboard/package.json b/packages/clipboard/package.json
index f87ed168..66129e7b 100644
--- a/packages/clipboard/package.json
+++ b/packages/clipboard/package.json
@@ -28,7 +28,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -37,10 +36,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/clipboard/tsconfig.json b/packages/clipboard/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/clipboard/tsconfig.json
+++ b/packages/clipboard/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/connectivity/README.md b/packages/connectivity/README.md
index 9c334d0e..8bf567e6 100644
--- a/packages/connectivity/README.md
+++ b/packages/connectivity/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/connectivity
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/connectivity?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/template-primitive)
 [![version](https://img.shields.io/npm/v/@solid-primitives/connectivity?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/template-primitive)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/connectivity/package.json b/packages/connectivity/package.json
index c7bb7a5a..494ea099 100644
--- a/packages/connectivity/package.json
+++ b/packages/connectivity/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/connectivity/tsconfig.json b/packages/connectivity/tsconfig.json
index 0f52db9f..4f15a568 100644
--- a/packages/connectivity/tsconfig.json
+++ b/packages/connectivity/tsconfig.json
@@ -1,5 +1,22 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/context/README.md b/packages/context/README.md
index 7c8f9772..4b2b0eae 100644
--- a/packages/context/README.md
+++ b/packages/context/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/context
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/context?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/context)
 [![version](https://img.shields.io/npm/v/@solid-primitives/context?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/context)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/context/package.json b/packages/context/package.json
index 3dca63e5..c44fdf05 100644
--- a/packages/context/package.json
+++ b/packages/context/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/context/tsconfig.json b/packages/context/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/context/tsconfig.json
+++ b/packages/context/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/controlled-props/README.md b/packages/controlled-props/README.md
index 8224b96f..3eaab3ab 100644
--- a/packages/controlled-props/README.md
+++ b/packages/controlled-props/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/controlled-props
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/controlled-props?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/controlled-props)
 [![size](https://img.shields.io/npm/v/@solid-primitives/controlled-props?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/controlled-props)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/controlled-props/package.json b/packages/controlled-props/package.json
index 6814bd53..8ca0d465 100644
--- a/packages/controlled-props/package.json
+++ b/packages/controlled-props/package.json
@@ -24,7 +24,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -35,10 +34,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/controlled-props/tsconfig.json b/packages/controlled-props/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/controlled-props/tsconfig.json
+++ b/packages/controlled-props/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/cookies/README.md b/packages/cookies/README.md
index 29d7adae..79c8e82f 100644
--- a/packages/cookies/README.md
+++ b/packages/cookies/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/cookies
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/cookies?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/cookies)
 [![version](https://img.shields.io/npm/v/@solid-primitives/cookies?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/cookies)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/cookies/package.json b/packages/cookies/package.json
index f482dd1a..9efc8573 100644
--- a/packages/cookies/package.json
+++ b/packages/cookies/package.json
@@ -37,7 +37,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -46,10 +45,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/cookies/tsconfig.json b/packages/cookies/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/cookies/tsconfig.json
+++ b/packages/cookies/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/cursor/README.md b/packages/cursor/README.md
index 054d4b9f..e01d1757 100644
--- a/packages/cursor/README.md
+++ b/packages/cursor/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/cursor
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/cursor?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/cursor)
 [![version](https://img.shields.io/npm/v/@solid-primitives/cursor?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/cursor)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/cursor/package.json b/packages/cursor/package.json
index cb7c3a25..38b9ad99 100644
--- a/packages/cursor/package.json
+++ b/packages/cursor/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/cursor/tsconfig.json b/packages/cursor/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/cursor/tsconfig.json
+++ b/packages/cursor/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/date/README.md b/packages/date/README.md
index 7560819a..2d98f72b 100644
--- a/packages/date/README.md
+++ b/packages/date/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/date
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/date?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/date)
 [![size](https://img.shields.io/npm/v/@solid-primitives/date?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/date)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/date/package.json b/packages/date/package.json
index 73b1617a..8fa53464 100644
--- a/packages/date/package.json
+++ b/packages/date/package.json
@@ -29,7 +29,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -38,10 +37,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/date/tsconfig.json b/packages/date/tsconfig.json
index 4082f16a..92295342 100644
--- a/packages/date/tsconfig.json
+++ b/packages/date/tsconfig.json
@@ -1,3 +1,22 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../memo"
+    },
+    {
+      "path": "../timer"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/deep/README.md b/packages/deep/README.md
index 7a1a5f11..58a865d0 100644
--- a/packages/deep/README.md
+++ b/packages/deep/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/deep
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/deep?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/deep)
 [![version](https://img.shields.io/npm/v/@solid-primitives/deep?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/deep)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/deep/package.json b/packages/deep/package.json
index 704034dd..07e9d14f 100644
--- a/packages/deep/package.json
+++ b/packages/deep/package.json
@@ -39,7 +39,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -48,10 +47,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/deep/tsconfig.json b/packages/deep/tsconfig.json
index 4082f16a..0efb428f 100644
--- a/packages/deep/tsconfig.json
+++ b/packages/deep/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../memo"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/destructure/README.md b/packages/destructure/README.md
index 5bd39e44..b52e8604 100644
--- a/packages/destructure/README.md
+++ b/packages/destructure/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/destructure
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/destructure?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/destructure)
 [![version](https://img.shields.io/npm/v/@solid-primitives/destructure?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/destructure)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/destructure/package.json b/packages/destructure/package.json
index 40898d92..5f838b41 100644
--- a/packages/destructure/package.json
+++ b/packages/destructure/package.json
@@ -26,7 +26,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -35,10 +34,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/destructure/tsconfig.json b/packages/destructure/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/destructure/tsconfig.json
+++ b/packages/destructure/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/devices/README.md b/packages/devices/README.md
index d66cddd1..e0cba2bd 100644
--- a/packages/devices/README.md
+++ b/packages/devices/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/devices
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/devices?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/devices)
 [![size](https://img.shields.io/npm/v/@solid-primitives/devices?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/devices)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/devices/package.json b/packages/devices/package.json
index c85248b2..72415bc0 100644
--- a/packages/devices/package.json
+++ b/packages/devices/package.json
@@ -31,7 +31,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "exports": {
@@ -39,10 +38,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/devices/tsconfig.json b/packages/devices/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/devices/tsconfig.json
+++ b/packages/devices/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/event-bus/README.md b/packages/event-bus/README.md
index cf7edd7b..f71bf899 100644
--- a/packages/event-bus/README.md
+++ b/packages/event-bus/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/event-bus
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-bus?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/event-bus)
 [![size](https://img.shields.io/npm/v/@solid-primitives/event-bus?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/event-bus)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/event-bus/package.json b/packages/event-bus/package.json
index ad3d7ef3..9d297a05 100644
--- a/packages/event-bus/package.json
+++ b/packages/event-bus/package.json
@@ -26,7 +26,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -35,10 +34,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/event-bus/tsconfig.json b/packages/event-bus/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/event-bus/tsconfig.json
+++ b/packages/event-bus/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/event-dispatcher/README.md b/packages/event-dispatcher/README.md
index c54e68c1..2960d375 100644
--- a/packages/event-dispatcher/README.md
+++ b/packages/event-dispatcher/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/event-dispatcher
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-dispatcher?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/event-dispatcher)
 [![version](https://img.shields.io/npm/v/@solid-primitives/event-dispatcher?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/event-dispatcher)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/event-dispatcher/package.json b/packages/event-dispatcher/package.json
index c3bdfff4..cce3c366 100644
--- a/packages/event-dispatcher/package.json
+++ b/packages/event-dispatcher/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/event-dispatcher/tsconfig.json b/packages/event-dispatcher/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/event-dispatcher/tsconfig.json
+++ b/packages/event-dispatcher/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/event-listener/README.md b/packages/event-listener/README.md
index 7280e94b..6e7a9921 100644
--- a/packages/event-listener/README.md
+++ b/packages/event-listener/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/event-listener
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-listener?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/event-listener)
 [![size](https://img.shields.io/npm/v/@solid-primitives/event-listener?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/event-listener)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/event-listener/package.json b/packages/event-listener/package.json
index 8d6e56d0..eb7f5f13 100644
--- a/packages/event-listener/package.json
+++ b/packages/event-listener/package.json
@@ -30,7 +30,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -39,10 +38,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/event-listener/tsconfig.json b/packages/event-listener/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/event-listener/tsconfig.json
+++ b/packages/event-listener/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/event-props/README.md b/packages/event-props/README.md
index 3454c7b1..e27e86f4 100644
--- a/packages/event-props/README.md
+++ b/packages/event-props/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/event-props
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/event-props?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/event-props)
 [![size](https://img.shields.io/npm/v/@solid-primitives/event-props?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/event-props)
 
diff --git a/packages/event-props/package.json b/packages/event-props/package.json
index df33c508..e43138d2 100644
--- a/packages/event-props/package.json
+++ b/packages/event-props/package.json
@@ -23,7 +23,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/event-props/tsconfig.json b/packages/event-props/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/event-props/tsconfig.json
+++ b/packages/event-props/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/fetch/README.md b/packages/fetch/README.md
index dab3483f..9ab8db9f 100644
--- a/packages/fetch/README.md
+++ b/packages/fetch/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/fetch
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/fetch?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/fetch)
 [![size](https://img.shields.io/npm/v/@solid-primitives/fetch?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/fetch)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/fetch/package.json b/packages/fetch/package.json
index f4e5f65d..547f40ff 100644
--- a/packages/fetch/package.json
+++ b/packages/fetch/package.json
@@ -23,7 +23,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/fetch/tsconfig.json b/packages/fetch/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/fetch/tsconfig.json
+++ b/packages/fetch/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/filesystem/README.md b/packages/filesystem/README.md
index 2f623a13..addb137f 100644
--- a/packages/filesystem/README.md
+++ b/packages/filesystem/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/filesystem
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/filesystem?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/filesystem)
 [![version](https://img.shields.io/npm/v/@solid-primitives/filesystem?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/filesystem)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/filesystem/package.json b/packages/filesystem/package.json
index 0bfe5276..c992e06b 100644
--- a/packages/filesystem/package.json
+++ b/packages/filesystem/package.json
@@ -41,7 +41,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -50,10 +49,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/filesystem/tsconfig.json b/packages/filesystem/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/filesystem/tsconfig.json
+++ b/packages/filesystem/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/flux-store/README.md b/packages/flux-store/README.md
index 4a5c649f..3e4cc50b 100644
--- a/packages/flux-store/README.md
+++ b/packages/flux-store/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/flux-store
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/flux-store?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/flux-store)
 [![version](https://img.shields.io/npm/v/@solid-primitives/flux-store?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/flux-store)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/flux-store/package.json b/packages/flux-store/package.json
index ace05290..6a00c18d 100644
--- a/packages/flux-store/package.json
+++ b/packages/flux-store/package.json
@@ -39,7 +39,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -48,10 +47,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/flux-store/tsconfig.json b/packages/flux-store/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/flux-store/tsconfig.json
+++ b/packages/flux-store/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/fullscreen/README.md b/packages/fullscreen/README.md
index f371445f..c224fb7b 100644
--- a/packages/fullscreen/README.md
+++ b/packages/fullscreen/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/fullscreen
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/fullscreen?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/fullscreen)
 [![size](https://img.shields.io/npm/v/@solid-primitives/fullscreen?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/fullscreen)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/fullscreen/package.json b/packages/fullscreen/package.json
index ded1bd32..74f583d7 100644
--- a/packages/fullscreen/package.json
+++ b/packages/fullscreen/package.json
@@ -23,7 +23,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/fullscreen/tsconfig.json b/packages/fullscreen/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/fullscreen/tsconfig.json
+++ b/packages/fullscreen/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/geolocation/README.md b/packages/geolocation/README.md
index f80cf615..12b4ab5f 100644
--- a/packages/geolocation/README.md
+++ b/packages/geolocation/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/geolocation
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/geolocation?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/geolocation)
 [![size](https://img.shields.io/npm/v/@solid-primitives/geolocation?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/geolocation)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/geolocation/package.json b/packages/geolocation/package.json
index fa243724..8d688e12 100644
--- a/packages/geolocation/package.json
+++ b/packages/geolocation/package.json
@@ -30,7 +30,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -39,10 +38,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/geolocation/tsconfig.json b/packages/geolocation/tsconfig.json
index 0f52db9f..acef5da3 100644
--- a/packages/geolocation/tsconfig.json
+++ b/packages/geolocation/tsconfig.json
@@ -1,5 +1,19 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/gestures/package.json b/packages/gestures/package.json
index 22698abf..f8f3fb93 100644
--- a/packages/gestures/package.json
+++ b/packages/gestures/package.json
@@ -19,7 +19,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -27,10 +26,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/gestures/tsconfig.json b/packages/gestures/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/gestures/tsconfig.json
+++ b/packages/gestures/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/graphql/README.md b/packages/graphql/README.md
index abb0ea48..85783888 100644
--- a/packages/graphql/README.md
+++ b/packages/graphql/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/graphql
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/audio?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/graphql)
 [![size](https://img.shields.io/npm/v/@solid-primitives/graphql?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/graphql)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/graphql/package.json b/packages/graphql/package.json
index fe0d4354..00bf84b5 100644
--- a/packages/graphql/package.json
+++ b/packages/graphql/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/graphql/tsconfig.json b/packages/graphql/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/graphql/tsconfig.json
+++ b/packages/graphql/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/history/README.md b/packages/history/README.md
index 365e14cb..5627c50d 100644
--- a/packages/history/README.md
+++ b/packages/history/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/history
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/history?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/history)
 [![version](https://img.shields.io/npm/v/@solid-primitives/history?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/history)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/history/package.json b/packages/history/package.json
index 7929ff88..403c29be 100644
--- a/packages/history/package.json
+++ b/packages/history/package.json
@@ -35,7 +35,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -44,10 +43,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/history/tsconfig.json b/packages/history/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/history/tsconfig.json
+++ b/packages/history/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/i18n/README.md b/packages/i18n/README.md
index db951eeb..e59582d4 100644
--- a/packages/i18n/README.md
+++ b/packages/i18n/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/i18n
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/i18n?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/i18n)
 [![size](https://img.shields.io/npm/v/@solid-primitives/i18n?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/i18n)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index b65c2da2..a3b04243 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -32,7 +32,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -41,10 +40,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json
index b5b011cb..38c71ce7 100644
--- a/packages/i18n/tsconfig.json
+++ b/packages/i18n/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/idle/README.md b/packages/idle/README.md
index 686a5279..896e3ec7 100644
--- a/packages/idle/README.md
+++ b/packages/idle/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/idle
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/idle?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/idle)
 [![version](https://img.shields.io/npm/v/@solid-primitives/idle?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/idle)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/idle/package.json b/packages/idle/package.json
index dab207f6..de7d00ca 100644
--- a/packages/idle/package.json
+++ b/packages/idle/package.json
@@ -27,7 +27,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/idle/tsconfig.json b/packages/idle/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/idle/tsconfig.json
+++ b/packages/idle/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/immutable/README.md b/packages/immutable/README.md
index 962da1b3..29fbb3d2 100644
--- a/packages/immutable/README.md
+++ b/packages/immutable/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/immutable
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/immutable?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/immutable)
 [![version](https://img.shields.io/npm/v/@solid-primitives/immutable?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/immutable)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/immutable/package.json b/packages/immutable/package.json
index bed6170f..60664356 100644
--- a/packages/immutable/package.json
+++ b/packages/immutable/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/immutable/tsconfig.json b/packages/immutable/tsconfig.json
index 0f52db9f..83b91e53 100644
--- a/packages/immutable/tsconfig.json
+++ b/packages/immutable/tsconfig.json
@@ -1,5 +1,19 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../keyed"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/input-mask/README.md b/packages/input-mask/README.md
index 4750fa2e..a06b8c06 100644
--- a/packages/input-mask/README.md
+++ b/packages/input-mask/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/input-mask
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/input-mask?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/input-mask)
 [![version](https://img.shields.io/npm/v/@solid-primitives/input-mask?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/input-mask)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/input-mask/package.json b/packages/input-mask/package.json
index 1661417f..67aef52d 100644
--- a/packages/input-mask/package.json
+++ b/packages/input-mask/package.json
@@ -24,7 +24,6 @@
   },
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -33,10 +32,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/input-mask/tsconfig.json b/packages/input-mask/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/input-mask/tsconfig.json
+++ b/packages/input-mask/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/intersection-observer/README.md b/packages/intersection-observer/README.md
index 288ab1fa..e76f4748 100644
--- a/packages/intersection-observer/README.md
+++ b/packages/intersection-observer/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/intersection-observer
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/intersection-observer?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/intersection-observer)
 [![size](https://img.shields.io/npm/v/@solid-primitives/intersection-observer?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/intersection-observer)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/intersection-observer/package.json b/packages/intersection-observer/package.json
index bc925291..8d499e73 100644
--- a/packages/intersection-observer/package.json
+++ b/packages/intersection-observer/package.json
@@ -28,7 +28,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -37,10 +36,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/intersection-observer/tsconfig.json b/packages/intersection-observer/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/intersection-observer/tsconfig.json
+++ b/packages/intersection-observer/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/jsx-tokenizer/package.json b/packages/jsx-tokenizer/package.json
index 98d2265e..03092bb9 100644
--- a/packages/jsx-tokenizer/package.json
+++ b/packages/jsx-tokenizer/package.json
@@ -37,7 +37,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -46,10 +45,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/jsx-tokenizer/tsconfig.json b/packages/jsx-tokenizer/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/jsx-tokenizer/tsconfig.json
+++ b/packages/jsx-tokenizer/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/keyboard/package.json b/packages/keyboard/package.json
index e0b6433e..eb630bf2 100644
--- a/packages/keyboard/package.json
+++ b/packages/keyboard/package.json
@@ -38,7 +38,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -47,10 +46,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/keyboard/tsconfig.json b/packages/keyboard/tsconfig.json
index 0f52db9f..4f15a568 100644
--- a/packages/keyboard/tsconfig.json
+++ b/packages/keyboard/tsconfig.json
@@ -1,5 +1,22 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/keyed/README.md b/packages/keyed/README.md
index 79b366df..7ae3db63 100644
--- a/packages/keyed/README.md
+++ b/packages/keyed/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/keyed
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/keyed?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/keyed)
 [![version](https://img.shields.io/npm/v/@solid-primitives/keyed?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/keyed)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/keyed/package.json b/packages/keyed/package.json
index d04db457..e80d10f8 100644
--- a/packages/keyed/package.json
+++ b/packages/keyed/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/keyed/tsconfig.json b/packages/keyed/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/keyed/tsconfig.json
+++ b/packages/keyed/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/lifecycle/README.md b/packages/lifecycle/README.md
index 1f6d3c2a..85b29529 100644
--- a/packages/lifecycle/README.md
+++ b/packages/lifecycle/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/lifecycle
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/lifecycle?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/lifecycle)
 [![version](https://img.shields.io/npm/v/@solid-primitives/lifecycle?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/lifecycle)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/lifecycle/package.json b/packages/lifecycle/package.json
index 47aae35e..fb08b503 100644
--- a/packages/lifecycle/package.json
+++ b/packages/lifecycle/package.json
@@ -35,7 +35,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -44,10 +43,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/lifecycle/tsconfig.json b/packages/lifecycle/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/lifecycle/tsconfig.json
+++ b/packages/lifecycle/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/list/README.md b/packages/list/README.md
index e38c5963..3030abe4 100644
--- a/packages/list/README.md
+++ b/packages/list/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/list
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/list?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/list)
 [![version](https://img.shields.io/npm/v/@solid-primitives/list?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/list)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/list/package.json b/packages/list/package.json
index f7db33e1..2f8b4d6b 100644
--- a/packages/list/package.json
+++ b/packages/list/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/list/tsconfig.json b/packages/list/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/list/tsconfig.json
+++ b/packages/list/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/map/README.md b/packages/map/README.md
index 42e2cdf3..cb113ad2 100644
--- a/packages/map/README.md
+++ b/packages/map/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/map
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/map?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/map)
 [![version](https://img.shields.io/npm/v/@solid-primitives/map?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/map)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/map/package.json b/packages/map/package.json
index 17bb3f41..db37deec 100644
--- a/packages/map/package.json
+++ b/packages/map/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/map/tsconfig.json b/packages/map/tsconfig.json
index 4082f16a..5554300f 100644
--- a/packages/map/tsconfig.json
+++ b/packages/map/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../trigger"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/marker/README.md b/packages/marker/README.md
index 5f958c53..e51eb95b 100644
--- a/packages/marker/README.md
+++ b/packages/marker/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/marker
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/marker?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/marker)
 [![version](https://img.shields.io/npm/v/@solid-primitives/marker?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/marker)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/marker/package.json b/packages/marker/package.json
index d4db3bff..32e36b7c 100644
--- a/packages/marker/package.json
+++ b/packages/marker/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/marker/tsconfig.json b/packages/marker/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/marker/tsconfig.json
+++ b/packages/marker/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/masonry/README.md b/packages/masonry/README.md
index ae4bacd6..a5e2d5cf 100644
--- a/packages/masonry/README.md
+++ b/packages/masonry/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/masonry
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/masonry?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/masonry)
 [![version](https://img.shields.io/npm/v/@solid-primitives/masonry?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/masonry)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/masonry/package.json b/packages/masonry/package.json
index 41fd3b3f..3ea38cd2 100644
--- a/packages/masonry/package.json
+++ b/packages/masonry/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/masonry/tsconfig.json b/packages/masonry/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/masonry/tsconfig.json
+++ b/packages/masonry/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/media/README.md b/packages/media/README.md
index 7d15fd81..968ea767 100644
--- a/packages/media/README.md
+++ b/packages/media/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/media
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/media?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/media)
 [![size](https://img.shields.io/npm/v/@solid-primitives/media?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/media)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/media/package.json b/packages/media/package.json
index 9b6677c8..1da3fa40 100644
--- a/packages/media/package.json
+++ b/packages/media/package.json
@@ -44,7 +44,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -53,10 +52,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/media/tsconfig.json b/packages/media/tsconfig.json
index 0f52db9f..536eac32 100644
--- a/packages/media/tsconfig.json
+++ b/packages/media/tsconfig.json
@@ -1,5 +1,25 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/memo/README.md b/packages/memo/README.md
index cea8a0bf..d3e5bdb6 100644
--- a/packages/memo/README.md
+++ b/packages/memo/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/memo
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/memo?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/memo)
 [![version](https://img.shields.io/npm/v/@solid-primitives/memo?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/memo)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/memo/package.json b/packages/memo/package.json
index 1c628ff0..68f33fe6 100644
--- a/packages/memo/package.json
+++ b/packages/memo/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/memo/tsconfig.json b/packages/memo/tsconfig.json
index 4082f16a..1eb81e9f 100644
--- a/packages/memo/tsconfig.json
+++ b/packages/memo/tsconfig.json
@@ -1,3 +1,19 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../scheduled"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/mouse/README.md b/packages/mouse/README.md
index cbc1e64e..19d5c4b7 100644
--- a/packages/mouse/README.md
+++ b/packages/mouse/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/mouse
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/mouse?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/mouse)
 [![size](https://img.shields.io/npm/v/@solid-primitives/mouse?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/mouse)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/mouse/package.json b/packages/mouse/package.json
index 3dfc03cc..ef8702db 100644
--- a/packages/mouse/package.json
+++ b/packages/mouse/package.json
@@ -21,7 +21,6 @@
   "sideEffects": false,
   "private": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -30,10 +29,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/mouse/tsconfig.json b/packages/mouse/tsconfig.json
index b5b011cb..536eac32 100644
--- a/packages/mouse/tsconfig.json
+++ b/packages/mouse/tsconfig.json
@@ -1,5 +1,25 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/mutable/README.md b/packages/mutable/README.md
index 633f92df..957fc635 100644
--- a/packages/mutable/README.md
+++ b/packages/mutable/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/mutable
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/mutable?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/mutable)
 [![version](https://img.shields.io/npm/v/@solid-primitives/mutable?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/mutable)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/mutable/package.json b/packages/mutable/package.json
index d4aa4d61..a143f0ac 100644
--- a/packages/mutable/package.json
+++ b/packages/mutable/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/mutable/tsconfig.json b/packages/mutable/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/mutable/tsconfig.json
+++ b/packages/mutable/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/mutation-observer/README.md b/packages/mutation-observer/README.md
index 76deea2b..e2064387 100644
--- a/packages/mutation-observer/README.md
+++ b/packages/mutation-observer/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/mutation-observer
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/mutation-observer?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/mutation-observer)
 [![size](https://img.shields.io/npm/v/@solid-primitives/mutation-observer?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/mutation-observer)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/mutation-observer/package.json b/packages/mutation-observer/package.json
index d0077d93..f4f246a1 100644
--- a/packages/mutation-observer/package.json
+++ b/packages/mutation-observer/package.json
@@ -29,7 +29,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -38,10 +37,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/mutation-observer/tsconfig.json b/packages/mutation-observer/tsconfig.json
index 0f52db9f..dc1970e1 100644
--- a/packages/mutation-observer/tsconfig.json
+++ b/packages/mutation-observer/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/page-visibility/README.md b/packages/page-visibility/README.md
index 50b61d6e..17826f21 100644
--- a/packages/page-visibility/README.md
+++ b/packages/page-visibility/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/page-visibility
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/page-visibility?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/page-visibility)
 [![size](https://img.shields.io/npm/v/@solid-primitives/page-visibility?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/page-visibility)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/page-visibility/package.json b/packages/page-visibility/package.json
index c86a9453..9150aca0 100644
--- a/packages/page-visibility/package.json
+++ b/packages/page-visibility/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/page-visibility/tsconfig.json b/packages/page-visibility/tsconfig.json
index 4082f16a..4f15a568 100644
--- a/packages/page-visibility/tsconfig.json
+++ b/packages/page-visibility/tsconfig.json
@@ -1,3 +1,22 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/pagination/README.md b/packages/pagination/README.md
index 04dd5672..e4c0f546 100644
--- a/packages/pagination/README.md
+++ b/packages/pagination/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/pagination
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/pagination?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/pagination)
 [![version](https://img.shields.io/npm/v/@solid-primitives/pagination?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/pagination)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/pagination/package.json b/packages/pagination/package.json
index bcf0b199..79d477e1 100644
--- a/packages/pagination/package.json
+++ b/packages/pagination/package.json
@@ -36,7 +36,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -45,10 +44,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/pagination/tsconfig.json b/packages/pagination/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/pagination/tsconfig.json
+++ b/packages/pagination/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/permission/README.md b/packages/permission/README.md
index 85f29ed2..fdc86474 100644
--- a/packages/permission/README.md
+++ b/packages/permission/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/permission
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/permission?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/permission)
 [![size](https://img.shields.io/npm/v/@solid-primitives/permission?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/permission)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/permission/package.json b/packages/permission/package.json
index 49c1372d..434b7c24 100644
--- a/packages/permission/package.json
+++ b/packages/permission/package.json
@@ -23,7 +23,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/permission/tsconfig.json b/packages/permission/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/permission/tsconfig.json
+++ b/packages/permission/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/platform/README.md b/packages/platform/README.md
index e1e80ce0..c937b66a 100644
--- a/packages/platform/README.md
+++ b/packages/platform/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/platform
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/platform?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/platform)
 [![version](https://img.shields.io/npm/v/@solid-primitives/platform?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/platform)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/platform/package.json b/packages/platform/package.json
index 22bc57fc..e0274c7c 100644
--- a/packages/platform/package.json
+++ b/packages/platform/package.json
@@ -34,7 +34,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/platform/tsconfig.json b/packages/platform/tsconfig.json
index 0f52db9f..38c71ce7 100644
--- a/packages/platform/tsconfig.json
+++ b/packages/platform/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/pointer/README.md b/packages/pointer/README.md
index 15488357..fa3eb524 100644
--- a/packages/pointer/README.md
+++ b/packages/pointer/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/pointer
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/pointer?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/pointer)
 [![version](https://img.shields.io/npm/v/@solid-primitives/pointer?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/pointer)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/pointer/package.json b/packages/pointer/package.json
index 435f809e..4144fa3a 100644
--- a/packages/pointer/package.json
+++ b/packages/pointer/package.json
@@ -35,7 +35,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -44,10 +43,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/pointer/tsconfig.json b/packages/pointer/tsconfig.json
index 0f52db9f..4f15a568 100644
--- a/packages/pointer/tsconfig.json
+++ b/packages/pointer/tsconfig.json
@@ -1,5 +1,22 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev", "./demo"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/presence/README.md b/packages/presence/README.md
index d29e9cd2..1e59eee1 100644
--- a/packages/presence/README.md
+++ b/packages/presence/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/presence
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/presence?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/presence)
 [![version](https://img.shields.io/npm/v/@solid-primitives/presence?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/presence)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/presence/package.json b/packages/presence/package.json
index ef5096bb..ee48eaca 100644
--- a/packages/presence/package.json
+++ b/packages/presence/package.json
@@ -23,7 +23,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "keywords": [
diff --git a/packages/presence/tsconfig.json b/packages/presence/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/presence/tsconfig.json
+++ b/packages/presence/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/promise/README.md b/packages/promise/README.md
index b6b79952..8e5b6fb1 100644
--- a/packages/promise/README.md
+++ b/packages/promise/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/promise
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/promise?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/promise)
 [![size](https://img.shields.io/npm/v/@solid-primitives/promise?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/promise)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/promise/package.json b/packages/promise/package.json
index 4e7d097c..b849a4d7 100644
--- a/packages/promise/package.json
+++ b/packages/promise/package.json
@@ -22,7 +22,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -31,10 +30,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/promise/tsconfig.json b/packages/promise/tsconfig.json
index b5b011cb..dc1970e1 100644
--- a/packages/promise/tsconfig.json
+++ b/packages/promise/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/props/README.md b/packages/props/README.md
index 5ea82f1c..83374477 100644
--- a/packages/props/README.md
+++ b/packages/props/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/props
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/props?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/props)
 [![size](https://img.shields.io/npm/v/@solid-primitives/props?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/props)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/props/package.json b/packages/props/package.json
index 7f2f85ab..a7e8c2cb 100644
--- a/packages/props/package.json
+++ b/packages/props/package.json
@@ -30,7 +30,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -39,10 +38,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/props/tsconfig.json b/packages/props/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/props/tsconfig.json
+++ b/packages/props/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/raf/README.md b/packages/raf/README.md
index 5966811d..c524b595 100644
--- a/packages/raf/README.md
+++ b/packages/raf/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/raf
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/raf?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/raf)
 [![size](https://img.shields.io/npm/v/@solid-primitives/raf?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/raf)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/raf/package.json b/packages/raf/package.json
index 64a4f472..b0f3ba8d 100644
--- a/packages/raf/package.json
+++ b/packages/raf/package.json
@@ -29,7 +29,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -38,10 +37,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/raf/tsconfig.json b/packages/raf/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/raf/tsconfig.json
+++ b/packages/raf/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/range/README.md b/packages/range/README.md
index 5b3a8c72..2506e6ab 100644
--- a/packages/range/README.md
+++ b/packages/range/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/range
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/range?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/range)
 [![version](https://img.shields.io/npm/v/@solid-primitives/range?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/range)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/range/package.json b/packages/range/package.json
index 184fcb36..d01eb081 100644
--- a/packages/range/package.json
+++ b/packages/range/package.json
@@ -39,7 +39,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -48,10 +47,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/range/tsconfig.json b/packages/range/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/range/tsconfig.json
+++ b/packages/range/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/refs/README.md b/packages/refs/README.md
index 1b1bff66..b510c5df 100644
--- a/packages/refs/README.md
+++ b/packages/refs/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/refs
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/refs?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/refs)
 [![version](https://img.shields.io/npm/v/@solid-primitives/refs?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/refs)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/refs/package.json b/packages/refs/package.json
index d3bd8138..afa1472e 100644
--- a/packages/refs/package.json
+++ b/packages/refs/package.json
@@ -27,7 +27,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/refs/tsconfig.json b/packages/refs/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/refs/tsconfig.json
+++ b/packages/refs/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/resize-observer/README.md b/packages/resize-observer/README.md
index c8ada9c0..7eb18802 100644
--- a/packages/resize-observer/README.md
+++ b/packages/resize-observer/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/resize-observer
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/resize-observer?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/resize-observer)
 [![size](https://img.shields.io/npm/v/@solid-primitives/resize-observer?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/resize-observer)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/resize-observer/package.json b/packages/resize-observer/package.json
index 435c8cdf..e3f6a8be 100644
--- a/packages/resize-observer/package.json
+++ b/packages/resize-observer/package.json
@@ -28,7 +28,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -37,10 +36,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "keywords": [
diff --git a/packages/resize-observer/tsconfig.json b/packages/resize-observer/tsconfig.json
index b5b011cb..536eac32 100644
--- a/packages/resize-observer/tsconfig.json
+++ b/packages/resize-observer/tsconfig.json
@@ -1,5 +1,25 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../static-store"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/resource/README.md b/packages/resource/README.md
index d4150729..1fe53c8c 100644
--- a/packages/resource/README.md
+++ b/packages/resource/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/resource
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/resource?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/resource)
 [![version](https://img.shields.io/npm/v/@solid-primitives/resource?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/resource)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/resource/package.json b/packages/resource/package.json
index 3cc136ac..9a291f7e 100644
--- a/packages/resource/package.json
+++ b/packages/resource/package.json
@@ -36,7 +36,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -45,10 +44,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/resource/tsconfig.json b/packages/resource/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/resource/tsconfig.json
+++ b/packages/resource/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/rootless/README.md b/packages/rootless/README.md
index 4954bddc..c6b6f123 100644
--- a/packages/rootless/README.md
+++ b/packages/rootless/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/rootless
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/rootless?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/rootless)
 [![version](https://img.shields.io/npm/v/@solid-primitives/rootless?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/rootless)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/rootless/package.json b/packages/rootless/package.json
index 66fe9a65..e924eee8 100644
--- a/packages/rootless/package.json
+++ b/packages/rootless/package.json
@@ -27,7 +27,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/rootless/tsconfig.json b/packages/rootless/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/rootless/tsconfig.json
+++ b/packages/rootless/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/scheduled/README.md b/packages/scheduled/README.md
index 15a336bd..9b4138c2 100644
--- a/packages/scheduled/README.md
+++ b/packages/scheduled/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/scheduled
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/scheduled?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/scheduled)
 [![version](https://img.shields.io/npm/v/@solid-primitives/scheduled?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/scheduled)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/scheduled/package.json b/packages/scheduled/package.json
index aceba800..22de7c1b 100644
--- a/packages/scheduled/package.json
+++ b/packages/scheduled/package.json
@@ -35,7 +35,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -44,10 +43,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/scheduled/tsconfig.json b/packages/scheduled/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/scheduled/tsconfig.json
+++ b/packages/scheduled/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/script-loader/README.md b/packages/script-loader/README.md
index ba567a83..de0a3f40 100644
--- a/packages/script-loader/README.md
+++ b/packages/script-loader/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/script-loader
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/script-loader?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/script-loader)
 [![size](https://img.shields.io/npm/v/@solid-primitives/script-loader?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/script-loader)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/script-loader/package.json b/packages/script-loader/package.json
index 192b5b4b..b1afbe51 100644
--- a/packages/script-loader/package.json
+++ b/packages/script-loader/package.json
@@ -26,7 +26,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -35,10 +34,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/script-loader/tsconfig.json b/packages/script-loader/tsconfig.json
index b5b011cb..38c71ce7 100644
--- a/packages/script-loader/tsconfig.json
+++ b/packages/script-loader/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/scroll/README.md b/packages/scroll/README.md
index 6b9f689e..ed2ed67a 100644
--- a/packages/scroll/README.md
+++ b/packages/scroll/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/scroll
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/scroll?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/scroll)
 [![size](https://img.shields.io/npm/v/@solid-primitives/scroll?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/scroll)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/scroll/package.json b/packages/scroll/package.json
index c5bb426f..675515e5 100644
--- a/packages/scroll/package.json
+++ b/packages/scroll/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/scroll/tsconfig.json b/packages/scroll/tsconfig.json
index b5b011cb..f696f154 100644
--- a/packages/scroll/tsconfig.json
+++ b/packages/scroll/tsconfig.json
@@ -1,5 +1,22 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../event-listener"
+    },
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../static-store"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/selection/README.md b/packages/selection/README.md
index bfa5072a..4ed73db8 100644
--- a/packages/selection/README.md
+++ b/packages/selection/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/selection
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/selection?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/selection)
 [![version](https://img.shields.io/npm/v/@solid-primitives/selection?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/selection)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/selection/package.json b/packages/selection/package.json
index cc4be529..7062a766 100644
--- a/packages/selection/package.json
+++ b/packages/selection/package.json
@@ -23,7 +23,6 @@
   },
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -32,10 +31,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/selection/tsconfig.json b/packages/selection/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/selection/tsconfig.json
+++ b/packages/selection/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/set/README.md b/packages/set/README.md
index f7890e41..5108b3bb 100644
--- a/packages/set/README.md
+++ b/packages/set/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/set
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/set?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/set)
 [![version](https://img.shields.io/npm/v/@solid-primitives/set?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/set)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/set/package.json b/packages/set/package.json
index 4231df37..ae0f181d 100644
--- a/packages/set/package.json
+++ b/packages/set/package.json
@@ -31,7 +31,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -40,10 +39,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/set/tsconfig.json b/packages/set/tsconfig.json
index b5b011cb..5554300f 100644
--- a/packages/set/tsconfig.json
+++ b/packages/set/tsconfig.json
@@ -1,5 +1,16 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../trigger"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/share/README.md b/packages/share/README.md
index 37244502..dab8a6aa 100644
--- a/packages/share/README.md
+++ b/packages/share/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/share
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/share?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/share)
 [![size](https://img.shields.io/npm/v/@solid-primitives/share?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/share)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/share/package.json b/packages/share/package.json
index 2d03defe..7797ab70 100644
--- a/packages/share/package.json
+++ b/packages/share/package.json
@@ -34,7 +34,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/share/tsconfig.json b/packages/share/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/share/tsconfig.json
+++ b/packages/share/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/signal-builders/README.md b/packages/signal-builders/README.md
index f785fa09..baccc5c1 100644
--- a/packages/signal-builders/README.md
+++ b/packages/signal-builders/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/signal-builders
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/signal-builders?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/signal-builders)
 [![version](https://img.shields.io/npm/v/@solid-primitives/signal-builders?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/signal-builders)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/signal-builders/package.json b/packages/signal-builders/package.json
index 6cb552fa..c04a2568 100644
--- a/packages/signal-builders/package.json
+++ b/packages/signal-builders/package.json
@@ -28,7 +28,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -37,10 +36,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/signal-builders/tsconfig.json b/packages/signal-builders/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/signal-builders/tsconfig.json
+++ b/packages/signal-builders/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/spring/README.md b/packages/spring/README.md
index 065d2a42..6d90e1e8 100644
--- a/packages/spring/README.md
+++ b/packages/spring/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/spring
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/spring?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/spring)
 [![version](https://img.shields.io/npm/v/@solid-primitives/spring?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/spring)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/spring/package.json b/packages/spring/package.json
index c908b761..ec501556 100644
--- a/packages/spring/package.json
+++ b/packages/spring/package.json
@@ -37,7 +37,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -46,10 +45,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/spring/tsconfig.json b/packages/spring/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/spring/tsconfig.json
+++ b/packages/spring/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/state-machine/README.md b/packages/state-machine/README.md
index 63318eb9..ce7bf19b 100644
--- a/packages/state-machine/README.md
+++ b/packages/state-machine/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/state-machine
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/state-machine?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/state-machine)
 [![version](https://img.shields.io/npm/v/@solid-primitives/state-machine?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/state-machine)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/state-machine/package.json b/packages/state-machine/package.json
index 17bd04a0..d22f7860 100644
--- a/packages/state-machine/package.json
+++ b/packages/state-machine/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -42,10 +41,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/state-machine/tsconfig.json b/packages/state-machine/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/state-machine/tsconfig.json
+++ b/packages/state-machine/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/static-store/README.md b/packages/static-store/README.md
index 5e1dde02..e75ce511 100644
--- a/packages/static-store/README.md
+++ b/packages/static-store/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/static-store
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/static-store?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/static-store)
 [![version](https://img.shields.io/npm/v/@solid-primitives/static-store?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/static-store)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/static-store/package.json b/packages/static-store/package.json
index 34804368..4034b80d 100644
--- a/packages/static-store/package.json
+++ b/packages/static-store/package.json
@@ -32,7 +32,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -41,10 +40,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/static-store/tsconfig.json b/packages/static-store/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/static-store/tsconfig.json
+++ b/packages/static-store/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/storage/README.md b/packages/storage/README.md
index 0976d395..11d70ed9 100644
--- a/packages/storage/README.md
+++ b/packages/storage/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/storage
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/storage?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/storage)
 [![size](https://img.shields.io/npm/v/@solid-primitives/storage?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/storage)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/storage/package.json b/packages/storage/package.json
index 94b9b36e..60abedc0 100644
--- a/packages/storage/package.json
+++ b/packages/storage/package.json
@@ -36,37 +36,28 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index/index.cjs",
-  "module": "./dist/index/index.js",
-  "types": "./dist/index/index.d.ts",
+  "module": "./dist/index.js",
+  "types": "./dist/index.d.ts",
   "browser": {},
   "exports": {
     "@solid-primitives/source": "./src/index.ts",
     ".": {
       "import": {
-        "types": "./dist/index/index.d.ts",
-        "default": "./dist/index/index.js"
-      },
-      "require": {
-        "types": "./dist/index/index.d.cts",
-        "default": "./dist/index/index.cjs"
+        "types": "./dist/index.d.ts",
+        "default": "./dist/index.js"
       }
     },
     "./tauri": {
       "import": {
-        "types": "./dist/tauri/index.d.ts",
-        "default": "./dist/tauri/index.js"
-      },
-      "require": {
-        "types": "./dist/tauri/index.d.cts",
-        "default": "./dist/tauri/index.cjs"
+        "types": "./dist/tauri.d.ts",
+        "default": "./dist/tauri.js"
       }
     }
   },
   "typesVersions": {
     "*": {
       "tauri": [
-        "./dist/tauri/index.d.ts"
+        "./dist/tauri.d.ts"
       ]
     }
   },
diff --git a/packages/storage/tsconfig.json b/packages/storage/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/storage/tsconfig.json
+++ b/packages/storage/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/stream/README.md b/packages/stream/README.md
index b4ce1497..5d427e8f 100644
--- a/packages/stream/README.md
+++ b/packages/stream/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/stream
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/stream?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/stream)
 [![size](https://img.shields.io/npm/v/@solid-primitives/stream?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/stream)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/stream/package.json b/packages/stream/package.json
index 49025a70..cf346135 100644
--- a/packages/stream/package.json
+++ b/packages/stream/package.json
@@ -27,7 +27,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/stream/tsconfig.json b/packages/stream/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/stream/tsconfig.json
+++ b/packages/stream/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/styles/README.md b/packages/styles/README.md
index dbbbd32c..68cbea57 100644
--- a/packages/styles/README.md
+++ b/packages/styles/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/styles
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/styles?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/styles)
 [![version](https://img.shields.io/npm/v/@solid-primitives/styles?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/styles)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/styles/package.json b/packages/styles/package.json
index 338bccab..ea1f2562 100644
--- a/packages/styles/package.json
+++ b/packages/styles/package.json
@@ -29,7 +29,6 @@
   "files": [
     "dist"
   ],
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -38,10 +37,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/styles/tsconfig.json b/packages/styles/tsconfig.json
index b5b011cb..335d9208 100644
--- a/packages/styles/tsconfig.json
+++ b/packages/styles/tsconfig.json
@@ -1,5 +1,19 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../rootless"
+    },
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/timer/README.md b/packages/timer/README.md
index 279be2e5..eef33f1f 100644
--- a/packages/timer/README.md
+++ b/packages/timer/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/timer
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/timer?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/timer)
 [![version](https://img.shields.io/npm/v/@solid-primitives/timer?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/timer)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/timer/package.json b/packages/timer/package.json
index 0014d2cb..0f50eb6b 100644
--- a/packages/timer/package.json
+++ b/packages/timer/package.json
@@ -31,7 +31,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -40,10 +39,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/timer/tsconfig.json b/packages/timer/tsconfig.json
index b5b011cb..38c71ce7 100644
--- a/packages/timer/tsconfig.json
+++ b/packages/timer/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/transition-group/README.md b/packages/transition-group/README.md
index d3eb17a8..70e48828 100644
--- a/packages/transition-group/README.md
+++ b/packages/transition-group/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/transition-group
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/transition-group?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/transition-group)
 [![version](https://img.shields.io/npm/v/@solid-primitives/transition-group?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/transition-group)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-2.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/transition-group/package.json b/packages/transition-group/package.json
index a6c90a59..0033c788 100644
--- a/packages/transition-group/package.json
+++ b/packages/transition-group/package.json
@@ -35,7 +35,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -44,10 +43,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/transition-group/tsconfig.json b/packages/transition-group/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/transition-group/tsconfig.json
+++ b/packages/transition-group/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/trigger/README.md b/packages/trigger/README.md
index 7724a03f..710b3aa5 100644
--- a/packages/trigger/README.md
+++ b/packages/trigger/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/trigger
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/trigger?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/trigger)
 [![version](https://img.shields.io/npm/v/@solid-primitives/trigger?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/trigger)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-1.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/trigger/package.json b/packages/trigger/package.json
index 085b7f94..4c5f4f84 100644
--- a/packages/trigger/package.json
+++ b/packages/trigger/package.json
@@ -28,7 +28,6 @@
   "files": [
     "dist"
   ],
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -37,10 +36,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/trigger/tsconfig.json b/packages/trigger/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/trigger/tsconfig.json
+++ b/packages/trigger/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/tween/README.md b/packages/tween/README.md
index 4f14e587..fcd8fb44 100644
--- a/packages/tween/README.md
+++ b/packages/tween/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/tween
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/tween?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/tween)
 [![size](https://img.shields.io/npm/v/@solid-primitives/tween?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/tween)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/tween/package.json b/packages/tween/package.json
index 6cb57059..7565ec70 100644
--- a/packages/tween/package.json
+++ b/packages/tween/package.json
@@ -29,7 +29,6 @@
   "type": "module",
   "private": false,
   "sideEffects": false,
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -38,10 +37,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/tween/tsconfig.json b/packages/tween/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/tween/tsconfig.json
+++ b/packages/tween/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/upload/README.md b/packages/upload/README.md
index a525088e..c3a0227a 100644
--- a/packages/upload/README.md
+++ b/packages/upload/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/upload
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/upload?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/upload)
 [![size](https://img.shields.io/npm/v/@solid-primitives/upload?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/upload)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/upload/package.json b/packages/upload/package.json
index 63584872..b3ed0e77 100644
--- a/packages/upload/package.json
+++ b/packages/upload/package.json
@@ -31,7 +31,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -40,10 +39,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/upload/tsconfig.json b/packages/upload/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/upload/tsconfig.json
+++ b/packages/upload/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/utils/package.json b/packages/utils/package.json
index c204142d..8ec4d14d 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -21,20 +21,15 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index/index.cjs",
-  "module": "./dist/index/index.js",
-  "types": "./dist/index/index.d.ts",
+  "module": "./dist/index.js",
+  "types": "./dist/index.d.ts",
   "browser": {},
   "exports": {
     ".": {
       "@solid-primitives/source": "./src/index.ts",
       "import": {
-        "types": "./dist/index/index.d.ts",
-        "default": "./dist/index/index.js"
-      },
-      "require": {
-        "types": "./dist/index/index.d.cts",
-        "default": "./dist/index/index.cjs"
+        "types": "./dist/index.d.ts",
+        "default": "./dist/index.js"
       }
     },
     "./immutable": {
@@ -42,10 +37,6 @@
       "import": {
         "types": "./dist/immutable/index.d.ts",
         "default": "./dist/immutable/index.js"
-      },
-      "require": {
-        "types": "./dist/immutable/index.d.cts",
-        "default": "./dist/immutable/index.cjs"
       }
     }
   },
diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json
index b5b011cb..38c71ce7 100644
--- a/packages/utils/tsconfig.json
+++ b/packages/utils/tsconfig.json
@@ -1,5 +1,12 @@
 {
   "extends": "../../tsconfig.json",
-  "include": ["./src", "./test", "./dev"],
-  "exclude": ["node_modules", "./dist"]
-}
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/virtual/README.md b/packages/virtual/README.md
index 80f3a4c4..306f760d 100644
--- a/packages/virtual/README.md
+++ b/packages/virtual/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/virtual
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/virtual?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/virtual)
 [![version](https://img.shields.io/npm/v/@solid-primitives/virtual?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/virtual)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/virtual/package.json b/packages/virtual/package.json
index af233b0c..dc58fd9d 100644
--- a/packages/virtual/package.json
+++ b/packages/virtual/package.json
@@ -33,7 +33,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -43,10 +42,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
diff --git a/packages/virtual/tsconfig.json b/packages/virtual/tsconfig.json
index 4082f16a..dc1970e1 100644
--- a/packages/virtual/tsconfig.json
+++ b/packages/virtual/tsconfig.json
@@ -1,3 +1,16 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [
+    {
+      "path": "../utils"
+    }
+  ],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/websocket/README.md b/packages/websocket/README.md
index eb06100c..44ccd024 100644
--- a/packages/websocket/README.md
+++ b/packages/websocket/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/websocket
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
 
 Primitive to help establish, maintain and operate a websocket connection.
diff --git a/packages/websocket/package.json b/packages/websocket/package.json
index ff1a404c..eeacd150 100644
--- a/packages/websocket/package.json
+++ b/packages/websocket/package.json
@@ -27,7 +27,6 @@
   },
   "private": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -36,10 +35,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "files": [
diff --git a/packages/websocket/tsconfig.json b/packages/websocket/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/websocket/tsconfig.json
+++ b/packages/websocket/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/packages/workers/README.md b/packages/workers/README.md
index cfaacd47..2944fe04 100644
--- a/packages/workers/README.md
+++ b/packages/workers/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/workers
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/workers?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/workers)
 [![size](https://img.shields.io/npm/v/@solid-primitives/workers?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/workers)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/packages/workers/package.json b/packages/workers/package.json
index 7acb30ed..07281017 100644
--- a/packages/workers/package.json
+++ b/packages/workers/package.json
@@ -25,7 +25,6 @@
   "private": false,
   "sideEffects": false,
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "browser": {},
   "types": "./dist/index.d.ts",
@@ -34,10 +33,6 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "scripts": {
diff --git a/packages/workers/tsconfig.json b/packages/workers/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/packages/workers/tsconfig.json
+++ b/packages/workers/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index addbfa8d..c2c9f821 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -29,6 +29,9 @@ importers:
       esbuild:
         specifier: ^0.19.11
         version: 0.19.12
+      esbuild-plugin-solid:
+        specifier: ^0.6.0
+        version: 0.6.0(esbuild@0.19.12)(solid-js@1.8.22)
       eslint:
         specifier: ^9.10.0
         version: 9.10.0(jiti@1.21.6)
@@ -65,24 +68,12 @@ importers:
       solid-js:
         specifier: ^1.8.22
         version: 1.8.22
-      tsup:
-        specifier: ^8.2.4
-        version: 8.2.4(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.0)
-      tsup-preset-solid:
-        specifier: ^2.2.0
-        version: 2.2.0(esbuild@0.19.12)(solid-js@1.8.22)(tsup@8.2.4(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.0))
       tsx:
         specifier: ^4.19.1
         version: 4.19.1
-      turbo:
-        specifier: ^1.12.5
-        version: 1.13.4
       typescript:
         specifier: ~5.6.2
         version: 5.6.2
-      valibot:
-        specifier: ^0.20.1
-        version: 0.20.1
       vinxi:
         specifier: ^0.4.2
         version: 0.4.2(@types/node@22.5.4)(ioredis@5.4.1)(sass@1.77.8)(terser@5.31.5)
@@ -997,7 +988,7 @@ importers:
         version: 0.1.0(solid-js@1.8.22)
       '@solid-primitives/media':
         specifier: latest
-        version: 2.2.9(solid-js@1.8.22)
+        version: 2.2.10(solid-js@1.8.22)
       '@solid-primitives/mutation-observer':
         specifier: latest
         version: 1.1.17(solid-js@1.8.22)
@@ -1009,7 +1000,7 @@ importers:
         version: 1.0.8(solid-js@1.8.22)
       '@solid-primitives/resize-observer':
         specifier: latest
-        version: 2.0.26(solid-js@1.8.22)
+        version: 2.0.27(solid-js@1.8.22)
       '@solid-primitives/rootless':
         specifier: latest
         version: 1.4.5(solid-js@1.8.22)
@@ -1018,7 +1009,7 @@ importers:
         version: 1.4.4(solid-js@1.8.22)
       '@solid-primitives/scroll':
         specifier: latest
-        version: 2.0.23(solid-js@1.8.22)
+        version: 2.0.24(solid-js@1.8.22)
       '@solid-primitives/tween':
         specifier: latest
         version: 1.3.0(solid-js@1.8.22)
@@ -2680,8 +2671,8 @@ packages:
     peerDependencies:
       solid-js: ^1.6.12
 
-  '@solid-primitives/media@2.2.9':
-    resolution: {integrity: sha512-QUmU62D4/d9YWx/4Dvr/UZasIkIpqNXz7wosA5GLmesRW9XlPa3G5M6uOmTw73SByHNTCw0D6x8bSdtvvLgzvQ==}
+  '@solid-primitives/media@2.2.10':
+    resolution: {integrity: sha512-zICx9lXvevycyHmzUp1AfrxmUsF27JGvDygf51mHUpvy/Y2SmxkM6UHKstBDlRSpLUhPTnF0iHCfdfne6g4Fow==}
     peerDependencies:
       solid-js: ^1.6.12
 
@@ -2700,8 +2691,8 @@ packages:
     peerDependencies:
       solid-js: ^1.6.12
 
-  '@solid-primitives/resize-observer@2.0.26':
-    resolution: {integrity: sha512-KbPhwal6ML9OHeUTZszBbt6PYSMj89d4wVCLxlvDYL4U0+p+xlCEaqz6v9dkCwm/0Lb+Wed7W5T1dQZCP3JUUw==}
+  '@solid-primitives/resize-observer@2.0.27':
+    resolution: {integrity: sha512-RmusjHqoA4U6MKI/T9yBJVDttASHpWBki1+YwM9zGXEDBqbysTa3lZpnlB244LzphQmobgeXVS78v0KtXVsF9g==}
     peerDependencies:
       solid-js: ^1.6.12
 
@@ -2715,13 +2706,13 @@ packages:
     peerDependencies:
       solid-js: ^1.6.12
 
-  '@solid-primitives/scroll@2.0.23':
-    resolution: {integrity: sha512-kO0YpXKEUHaAnHp3zIsHYmxxuKXO3/LxVhZQHHmhqsmUY6A5IBObkSkoQ/ChIPl/WMKE7ynxEq40OgRmhvyUSw==}
+  '@solid-primitives/scroll@2.0.24':
+    resolution: {integrity: sha512-Aqi4YIrecPRlypPeOcXjuqOz4DlOm2heJ5cPJtfumkonJFttWEFrYbfq1PKiEFBinPf5D9gxq4gYpx1Dxo2Z0g==}
     peerDependencies:
       solid-js: ^1.6.12
 
-  '@solid-primitives/static-store@0.0.8':
-    resolution: {integrity: sha512-ZecE4BqY0oBk0YG00nzaAWO5Mjcny8Fc06CdbXadH9T9lzq/9GefqcSe/5AtdXqjvY/DtJ5C6CkcjPZO0o/eqg==}
+  '@solid-primitives/static-store@0.0.9':
+    resolution: {integrity: sha512-8zaTXTEnQFqdwfkqWmGVb/OYgSTbRgxJSWQNfLuA+KnuW4RzTRQE2jzgnNJjJjaloruv9EHGvikmJzQJ5aOrEw==}
     peerDependencies:
       solid-js: ^1.6.12
 
@@ -3266,12 +3257,6 @@ packages:
     resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
     engines: {node: '>=12'}
 
-  bundle-require@5.0.0:
-    resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-    peerDependencies:
-      esbuild: '>=0.18'
-
   busboy@1.6.0:
     resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
     engines: {node: '>=10.16.0'}
@@ -3785,10 +3770,10 @@ packages:
   es-module-lexer@1.5.4:
     resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
 
-  esbuild-plugin-solid@0.5.0:
-    resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==}
+  esbuild-plugin-solid@0.6.0:
+    resolution: {integrity: sha512-V1FvDALwLDX6K0XNYM9CMRAnMzA0+Ecu55qBUT9q/eAJh1KIDsTMFoOzMSgyHqbOfvrVfO3Mws3z7TW2GVnIZA==}
     peerDependencies:
-      esbuild: '>=0.12'
+      esbuild: '>=0.20'
       solid-js: '>= 1.0'
 
   esbuild@0.19.12:
@@ -4516,10 +4501,6 @@ packages:
   jose@5.6.3:
     resolution: {integrity: sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==}
 
-  joycon@3.1.1:
-    resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
-    engines: {node: '>=10'}
-
   js-tokens@4.0.0:
     resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
 
@@ -4623,10 +4604,6 @@ packages:
       enquirer:
         optional: true
 
-  load-tsconfig@0.2.5:
-    resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
   local-pkg@0.5.0:
     resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
     engines: {node: '>=14'}
@@ -5303,24 +5280,6 @@ packages:
       ts-node:
         optional: true
 
-  postcss-load-config@6.0.1:
-    resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
-    engines: {node: '>= 18'}
-    peerDependencies:
-      jiti: '>=1.21.0'
-      postcss: '>=8.0.9'
-      tsx: ^4.8.1
-      yaml: ^2.4.2
-    peerDependenciesMeta:
-      jiti:
-        optional: true
-      postcss:
-        optional: true
-      tsx:
-        optional: true
-      yaml:
-        optional: true
-
   postcss-nested@4.2.3:
     resolution: {integrity: sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==}
 
@@ -5871,10 +5830,6 @@ packages:
     resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
     engines: {node: '>= 8'}
 
-  source-map@0.8.0-beta.0:
-    resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
-    engines: {node: '>= 8'}
-
   space-separated-tokens@2.0.2:
     resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
 
@@ -6101,17 +6056,10 @@ packages:
   tr46@0.0.3:
     resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
 
-  tr46@1.0.1:
-    resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
-
   tr46@5.0.0:
     resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
     engines: {node: '>=18'}
 
-  tree-kill@1.2.2:
-    resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
-    hasBin: true
-
   trim-lines@3.0.1:
     resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
 
@@ -6133,69 +6081,11 @@ packages:
   tslib@2.6.3:
     resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
 
-  tsup-preset-solid@2.2.0:
-    resolution: {integrity: sha512-sPAzeArmYkVAZNRN+m4tkiojdd0GzW/lCwd4+TQDKMENe8wr2uAuro1s0Z59ASmdBbkXoxLgCiNcuQMyiidMZg==}
-    peerDependencies:
-      tsup: ^8.0.0
-
-  tsup@8.2.4:
-    resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==}
-    engines: {node: '>=18'}
-    hasBin: true
-    peerDependencies:
-      '@microsoft/api-extractor': ^7.36.0
-      '@swc/core': ^1
-      postcss: ^8.4.12
-      typescript: '>=4.5.0'
-    peerDependenciesMeta:
-      '@microsoft/api-extractor':
-        optional: true
-      '@swc/core':
-        optional: true
-      postcss:
-        optional: true
-      typescript:
-        optional: true
-
   tsx@4.19.1:
     resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==}
     engines: {node: '>=18.0.0'}
     hasBin: true
 
-  turbo-darwin-64@1.13.4:
-    resolution: {integrity: sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==}
-    cpu: [x64]
-    os: [darwin]
-
-  turbo-darwin-arm64@1.13.4:
-    resolution: {integrity: sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==}
-    cpu: [arm64]
-    os: [darwin]
-
-  turbo-linux-64@1.13.4:
-    resolution: {integrity: sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==}
-    cpu: [x64]
-    os: [linux]
-
-  turbo-linux-arm64@1.13.4:
-    resolution: {integrity: sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==}
-    cpu: [arm64]
-    os: [linux]
-
-  turbo-windows-64@1.13.4:
-    resolution: {integrity: sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==}
-    cpu: [x64]
-    os: [win32]
-
-  turbo-windows-arm64@1.13.4:
-    resolution: {integrity: sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==}
-    cpu: [arm64]
-    os: [win32]
-
-  turbo@1.13.4:
-    resolution: {integrity: sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==}
-    hasBin: true
-
   type-check@0.4.0:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
@@ -6383,9 +6273,6 @@ packages:
   util-deprecate@1.0.2:
     resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 
-  valibot@0.20.1:
-    resolution: {integrity: sha512-7lToTLG5wtK76u32gq8dUK0bAw7bknTGbeNSKRJunAC2soGVnNrKngg+38Jjt6FOwH+MshUONHoFz+LgmjeYKQ==}
-
   validate-html-nesting@1.2.2:
     resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
 
@@ -6515,9 +6402,6 @@ packages:
   webidl-conversions@3.0.1:
     resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
 
-  webidl-conversions@4.0.2:
-    resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
-
   webidl-conversions@7.0.0:
     resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
     engines: {node: '>=12'}
@@ -6544,9 +6428,6 @@ packages:
   whatwg-url@5.0.0:
     resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
 
-  whatwg-url@7.1.0:
-    resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
-
   which-module@2.0.1:
     resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
 
@@ -6716,7 +6597,7 @@ snapshots:
   '@babel/code-frame@7.24.7':
     dependencies:
       '@babel/highlight': 7.24.7
-      picocolors: 1.0.1
+      picocolors: 1.1.0
 
   '@babel/compat-data@7.25.2': {}
 
@@ -8343,11 +8224,11 @@ snapshots:
     dependencies:
       solid-js: 1.8.22
 
-  '@solid-primitives/media@2.2.9(solid-js@1.8.22)':
+  '@solid-primitives/media@2.2.10(solid-js@1.8.22)':
     dependencies:
       '@solid-primitives/event-listener': 2.3.3(solid-js@1.8.22)
       '@solid-primitives/rootless': 1.4.5(solid-js@1.8.22)
-      '@solid-primitives/static-store': 0.0.8(solid-js@1.8.22)
+      '@solid-primitives/static-store': 0.0.9(solid-js@1.8.22)
       '@solid-primitives/utils': 6.2.3(solid-js@1.8.22)
       solid-js: 1.8.22
 
@@ -8370,11 +8251,11 @@ snapshots:
       '@solid-primitives/utils': 6.2.3(solid-js@1.8.22)
       solid-js: 1.8.22
 
-  '@solid-primitives/resize-observer@2.0.26(solid-js@1.8.22)':
+  '@solid-primitives/resize-observer@2.0.27(solid-js@1.8.22)':
     dependencies:
       '@solid-primitives/event-listener': 2.3.3(solid-js@1.8.22)
       '@solid-primitives/rootless': 1.4.5(solid-js@1.8.22)
-      '@solid-primitives/static-store': 0.0.8(solid-js@1.8.22)
+      '@solid-primitives/static-store': 0.0.9(solid-js@1.8.22)
       '@solid-primitives/utils': 6.2.3(solid-js@1.8.22)
       solid-js: 1.8.22
 
@@ -8387,14 +8268,14 @@ snapshots:
     dependencies:
       solid-js: 1.8.22
 
-  '@solid-primitives/scroll@2.0.23(solid-js@1.8.22)':
+  '@solid-primitives/scroll@2.0.24(solid-js@1.8.22)':
     dependencies:
       '@solid-primitives/event-listener': 2.3.3(solid-js@1.8.22)
       '@solid-primitives/rootless': 1.4.5(solid-js@1.8.22)
-      '@solid-primitives/static-store': 0.0.8(solid-js@1.8.22)
+      '@solid-primitives/static-store': 0.0.9(solid-js@1.8.22)
       solid-js: 1.8.22
 
-  '@solid-primitives/static-store@0.0.8(solid-js@1.8.22)':
+  '@solid-primitives/static-store@0.0.9(solid-js@1.8.22)':
     dependencies:
       '@solid-primitives/utils': 6.2.3(solid-js@1.8.22)
       solid-js: 1.8.22
@@ -9105,11 +8986,6 @@ snapshots:
     dependencies:
       run-applescript: 5.0.0
 
-  bundle-require@5.0.0(esbuild@0.23.0):
-    dependencies:
-      esbuild: 0.23.0
-      load-tsconfig: 0.2.5
-
   busboy@1.6.0:
     dependencies:
       streamsearch: 1.1.0
@@ -9558,7 +9434,7 @@ snapshots:
 
   es-module-lexer@1.5.4: {}
 
-  esbuild-plugin-solid@0.5.0(esbuild@0.19.12)(solid-js@1.8.22):
+  esbuild-plugin-solid@0.6.0(esbuild@0.19.12)(solid-js@1.8.22):
     dependencies:
       '@babel/core': 7.25.2
       '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2)
@@ -10496,8 +10372,6 @@ snapshots:
 
   jose@5.6.3: {}
 
-  joycon@3.1.1: {}
-
   js-tokens@4.0.0: {}
 
   js-tokens@9.0.0: {}
@@ -10631,8 +10505,6 @@ snapshots:
     optionalDependencies:
       enquirer: 2.4.1
 
-  load-tsconfig@0.2.5: {}
-
   local-pkg@0.5.0:
     dependencies:
       mlly: 1.7.1
@@ -11530,15 +11402,6 @@ snapshots:
     optionalDependencies:
       postcss: 8.4.41
 
-  postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(yaml@2.5.0):
-    dependencies:
-      lilconfig: 3.1.2
-    optionalDependencies:
-      jiti: 1.21.6
-      postcss: 8.4.45
-      tsx: 4.19.1
-      yaml: 2.5.0
-
   postcss-nested@4.2.3:
     dependencies:
       postcss: 7.0.39
@@ -12099,10 +11962,6 @@ snapshots:
 
   source-map@0.7.4: {}
 
-  source-map@0.8.0-beta.0:
-    dependencies:
-      whatwg-url: 7.1.0
-
   space-separated-tokens@2.0.2: {}
 
   spawndamnit@2.0.0:
@@ -12363,16 +12222,10 @@ snapshots:
 
   tr46@0.0.3: {}
 
-  tr46@1.0.1:
-    dependencies:
-      punycode: 2.3.1
-
   tr46@5.0.0:
     dependencies:
       punycode: 2.3.1
 
-  tree-kill@1.2.2: {}
-
   trim-lines@3.0.1: {}
 
   trough@2.2.0: {}
@@ -12387,42 +12240,6 @@ snapshots:
 
   tslib@2.6.3: {}
 
-  tsup-preset-solid@2.2.0(esbuild@0.19.12)(solid-js@1.8.22)(tsup@8.2.4(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.0)):
-    dependencies:
-      esbuild-plugin-solid: 0.5.0(esbuild@0.19.12)(solid-js@1.8.22)
-      tsup: 8.2.4(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.0)
-    transitivePeerDependencies:
-      - esbuild
-      - solid-js
-      - supports-color
-
-  tsup@8.2.4(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(typescript@5.6.2)(yaml@2.5.0):
-    dependencies:
-      bundle-require: 5.0.0(esbuild@0.23.0)
-      cac: 6.7.14
-      chokidar: 3.6.0
-      consola: 3.2.3
-      debug: 4.3.6
-      esbuild: 0.23.0
-      execa: 5.1.1
-      globby: 11.1.0
-      joycon: 3.1.1
-      picocolors: 1.0.1
-      postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.45)(tsx@4.19.1)(yaml@2.5.0)
-      resolve-from: 5.0.0
-      rollup: 4.20.0
-      source-map: 0.8.0-beta.0
-      sucrase: 3.35.0
-      tree-kill: 1.2.2
-    optionalDependencies:
-      postcss: 8.4.45
-      typescript: 5.6.2
-    transitivePeerDependencies:
-      - jiti
-      - supports-color
-      - tsx
-      - yaml
-
   tsx@4.19.1:
     dependencies:
       esbuild: 0.23.0
@@ -12430,33 +12247,6 @@ snapshots:
     optionalDependencies:
       fsevents: 2.3.3
 
-  turbo-darwin-64@1.13.4:
-    optional: true
-
-  turbo-darwin-arm64@1.13.4:
-    optional: true
-
-  turbo-linux-64@1.13.4:
-    optional: true
-
-  turbo-linux-arm64@1.13.4:
-    optional: true
-
-  turbo-windows-64@1.13.4:
-    optional: true
-
-  turbo-windows-arm64@1.13.4:
-    optional: true
-
-  turbo@1.13.4:
-    optionalDependencies:
-      turbo-darwin-64: 1.13.4
-      turbo-darwin-arm64: 1.13.4
-      turbo-linux-64: 1.13.4
-      turbo-linux-arm64: 1.13.4
-      turbo-windows-64: 1.13.4
-      turbo-windows-arm64: 1.13.4
-
   type-check@0.4.0:
     dependencies:
       prelude-ls: 1.2.1
@@ -12642,8 +12432,6 @@ snapshots:
 
   util-deprecate@1.0.2: {}
 
-  valibot@0.20.1: {}
-
   validate-html-nesting@1.2.2: {}
 
   value-or-promise@1.0.12: {}
@@ -12849,8 +12637,6 @@ snapshots:
 
   webidl-conversions@3.0.1: {}
 
-  webidl-conversions@4.0.2: {}
-
   webidl-conversions@7.0.0: {}
 
   webpack-sources@3.2.3: {}
@@ -12873,12 +12659,6 @@ snapshots:
       tr46: 0.0.3
       webidl-conversions: 3.0.1
 
-  whatwg-url@7.1.0:
-    dependencies:
-      lodash.sortby: 4.7.0
-      tr46: 1.0.1
-      webidl-conversions: 4.0.2
-
   which-module@2.0.1: {}
 
   which@1.3.1:
diff --git a/scripts/build.ts b/scripts/build.ts
index 9e391de4..e206d561 100644
--- a/scripts/build.ts
+++ b/scripts/build.ts
@@ -1,94 +1,53 @@
-import * as path from "node:path";
-import * as tsup from "tsup";
-import * as preset from "tsup-preset-solid";
-import * as utils from "./utils/index.js";
-
-/*
-
-Toggle additional entries as needed.
-
-`--write` or `-w` will write the exports configuration to package.json instead of to the console.
-The exports configuration is taken from the solid-js package.json.
-
-*/
-
-const { env, argv } = process;
-const write_exports = argv.includes("--write") || argv.includes("-w");
-
-export const CI =
-  env["CI"] === "true" ||
-  env["CI"] === '"1"' ||
-  env["GITHUB_ACTIONS"] === "true" ||
-  env["GITHUB_ACTIONS"] === '"1"' ||
-  !!env["TURBO_HASH"];
-
-const custom_entries: Record<string, preset.EntryOptions | preset.EntryOptions[]> = {
-  "controlled-props": {
-    entry: "src/index.tsx",
-  },
-  virtual: {
-    entry: "src/index.tsx",
-  },
-  /*filesystem: [
-    {
-      entry: "src/index.ts",
-    },
-    {
-      entry: "src/tauri.ts",
-      name: "tauri",
-    },
-  ],*/
-  storage: [
-    {
-      entry: "src/index.ts",
-    },
-    {
-      entry: "src/tauri.ts",
-      name: "tauri",
-    },
-  ],
-  utils: [
-    {
-      entry: "src/index.ts",
-    },
-    {
-      name: "immutable",
-      entry: "src/immutable/index.ts",
-    },
-  ],
-};
-
-const custom_tsup_options: Record<string, (options: tsup.Options) => void> = {
-  filesystem(options) {
-    // by default, the platform is "browser" - it'll prevent using node builtins
-    options.platform = "node";
-  },
-};
-
-const package_name = utils.getPackageNameFromCWD();
-if (package_name == null) {
-  throw "this script should be ran from one of the pacakges";
-}
-
-const parsed_options = preset.parsePresetOptions({
-  entries: custom_entries[package_name] ?? { entry: `src/index.ts` },
-  cjs: true,
-});
-
-if (!CI) {
-  const package_fields = preset.generatePackageExports(parsed_options);
-
-  if (write_exports) {
-    preset.writePackageJson(package_fields);
+import * as fsp from "node:fs/promises"
+import * as cp from "node:child_process"
+import * as path from "node:path"
+import * as esb from "esbuild"
+import * as esb_solid from "esbuild-plugin-solid"
+import * as utils from "./utils/index.js"
+
+const ROOT_DIST_DIR = path.join(utils.ROOT_DIR, "dist")
+
+// Emit d.ts and .js(x) files
+const tsc = cp.spawn("tsc", ["-b", "packages/*"], {
+  stdio: "inherit",
+  cwd: utils.ROOT_DIR,
+  shell: true,
+})
+
+tsc.on("close", code => {
+  if (code === 0) {
+    utils.log_info(`tsc step completed in ${performance.now().toFixed()}ms.`)
   } else {
-    // eslint-disable-next-line no-console
-    console.log("Package json exports:", JSON.stringify(package_fields, null, 2));
+    utils.log_error("tsc step failed.")
+    process.exit(1)
   }
+})
+
+try {
+  // Emit .js files for packages with jsx
+  await esb.build({
+    plugins:     [esb_solid.solidPlugin()],
+    entryPoints: [
+      path.join(utils.PACKAGES_DIR, "controlled-props", "src", "index.tsx"),
+      path.join(utils.PACKAGES_DIR, "virtual", "src", "index.tsx"),
+    ],
+    outdir:      ROOT_DIST_DIR,
+    format:      "esm",
+    platform:    "browser",
+    target:      ["esnext"]
+  })
+
+  // Copy esbuild output to /packages/*/dist/
+  await fsp.readdir(ROOT_DIST_DIR).then(names => Promise.all(names.map(name => {
+      const module_dist_dir = path.join(ROOT_DIST_DIR, name, "src")
+      const target_dist_dir = path.join(utils.PACKAGES_DIR, name, "dist")
+      return utils.copyDirectory(module_dist_dir, target_dist_dir)
+  })))
+  
+  await fsp.rm(ROOT_DIST_DIR, {recursive: true, force: true})
+
+  utils.log_info(`esbuild step completed in ${performance.now().toFixed()}ms.`)
+} catch (err) {
+  utils.log_error("esbuild step failed.")
+  throw err
 }
-
-const tsup_options = preset.generateTsupOptions(parsed_options);
-
-const modifyOptions = custom_tsup_options[package_name];
-if (modifyOptions) for (const option of tsup_options) modifyOptions(option);
-
-tsup_options.forEach(tsup.build);
diff --git a/scripts/dev.ts b/scripts/dev.ts
index 6217f0c3..b57b03b9 100644
--- a/scripts/dev.ts
+++ b/scripts/dev.ts
@@ -7,7 +7,7 @@ if (package_name == null) {
   throw "this script should be ran from one of the pacakges";
 }
 
-utils.logLine(
+utils.log_info(
   `Starting dev server for the ${package_name} package...\n
 Visit the playground at http://localhost:3000/playground/${package_name} to test your changes.`,
 );
diff --git a/scripts/measure.ts b/scripts/measure.ts
index 9b5e75af..67b3c29e 100644
--- a/scripts/measure.ts
+++ b/scripts/measure.ts
@@ -1,10 +1,4 @@
-import {
-  checkValidPackageName,
-  formatBytes,
-  getPackageBundlesize,
-  getPackagePkg,
-  logLine,
-} from "./utils/index.js";
+import * as utils from "./utils/index.js";
 
 if (process.argv.length < 3)
   throw new Error(
@@ -13,7 +7,7 @@ if (process.argv.length < 3)
 
 const name = process.argv[2];
 
-if (!name || !checkValidPackageName(name))
+if (!name || !utils.checkValidPackageName(name))
   throw new Error(`Incorrect package name argument: "${name}"`);
 
 class ConsoleTable {
@@ -39,13 +33,13 @@ class ConsoleTable {
     const separator = columnWidths.map(columnWidth => "—".repeat(columnWidth)).join(" + ");
 
     for (const row of this.rows) {
-      logLine(
+      utils.log_info(
         row.length === 0
           ? separator
           : columnWidths
               .map((columnWidth, i) => {
                 if (!row[i]) return " ".repeat(columnWidth);
-                const cellWidth = row[i]!.length;
+                const cellWidth = row[i].length;
                 const padding = " ".repeat(columnWidth - cellWidth);
                 return row[i] + padding;
               })
@@ -57,18 +51,19 @@ class ConsoleTable {
   }
 }
 
-const pkg = getPackagePkg(name);
-if (pkg instanceof Error) throw pkg;
+const module = await utils.getModuleData(name)
+if (module instanceof Error) throw module;
+if (module.primitive == null) throw Error(`Package ${name} doesn't have primitive data in package.json`);
 
-const primitives = (pkg.primitive as any).list as string[];
-const peerDependencies = Object.keys(pkg.peerDependencies);
+const primitives = module.primitive.list
+const peerDependencies = module.peer_deps;
 
-logLine(`Measuring "@solid-primitives/${name}"...\n`);
+utils.log_info(`Measuring "@solid-primitives/${name}"...\n`);
 
 const primitivesSizesPromises = primitives.map(primitive =>
-  getPackageBundlesize(name, { exportName: primitive, peerDependencies }),
+  utils.getPackageBundlesize(name, { exportName: primitive, peerDependencies }),
 );
-const packageSizePromise = getPackageBundlesize(name, { peerDependencies });
+const packageSizePromise = utils.getPackageBundlesize(name, { peerDependencies });
 
 const [primitivesSizes, packageSize] = await Promise.all([
   Promise.all(primitivesSizesPromises),
@@ -83,21 +78,21 @@ table.addSeparator();
 primitivesSizes.forEach((size, i) => {
   table.addRow([
     primitives[i]!,
-    size ? formatBytes(size.min).join(" ") : "N/A",
-    size ? formatBytes(size.gzip).join(" ") : "N/A",
+    size ? utils.formatBytes(size.min).join(" ") : "N/A",
+    size ? utils.formatBytes(size.gzip).join(" ") : "N/A",
   ]);
 });
 table.addSeparator();
 
 table.addRow([
   "Total",
-  packageSize ? formatBytes(packageSize.min).join(" ") : "N/A",
-  packageSize ? formatBytes(packageSize.gzip).join(" ") : "N/A",
+  packageSize ? utils.formatBytes(packageSize.min).join(" ") : "N/A",
+  packageSize ? utils.formatBytes(packageSize.gzip).join(" ") : "N/A",
 ]);
 
 table.log();
 
-logLine(`
+utils.log_info(`
 ${primitivesSizes.every(size => size) ? "✅" : "❌"} All primitives measured successfully.
 ${packageSize ? "✅" : "❌"} Measured the package successfully.
 `);
diff --git a/scripts/update-readme.ts b/scripts/update-readme.ts
index cf5de7e3..b8e130fa 100644
--- a/scripts/update-readme.ts
+++ b/scripts/update-readme.ts
@@ -33,10 +33,12 @@ const rootDependencies: string[] = [
 (async () => {
   const modulesData = await utils.getModulesData();
 
-  for (const { name, category, primitives, stage, workspace_deps } of modulesData) {
+  for (const module of modulesData) {
+    if (module.primitive == null) continue
+
     const packageName = `@solid-primitives/${name}`;
 
-    if (workspace_deps.length === 0) {
+    if (module.workspace_deps.length === 0) {
       rootDependencies.push(packageName);
     }
 
@@ -51,13 +53,13 @@ const rootDependencies: string[] = [
       data.Size = `[![SIZE](${sizeShield}${packageName}?style=for-the-badge&label=)](${bundlephobiaURL}${packageName})`;
       data.NPM = `[![VERSION](${npmShield}${packageName}?style=for-the-badge&label=)](${npmURL}${packageName})`;
     }
-    data.Stage = `[![STAGE](${stageShieldBaseURL}${stage}.json)](${stageShieldLink})`;
-    data.Primitives = primitives
+    data.Stage = `[![STAGE](${stageShieldBaseURL}${module.primitive.stage}.json)](${stageShieldLink})`;
+    data.Primitives = module.primitive.list
       .map(prim => `[${prim}](${githubURL}${name}#${prim.replace(/ /g, "-").toLowerCase()})`)
       .join("<br />");
     // Merge the package into the correct category
-    const cat = categories[category];
-    categories[category] = cat ? [...cat, data] : [data];
+    const cat = categories[module.primitive.category];
+    categories[module.primitive.category] = cat ? [...cat, data] : [data];
   }
 
   const pathToREADME = path.join(utils.ROOT_DIR, "README.md");
diff --git a/scripts/update-tsconfigs.ts b/scripts/update-tsconfigs.ts
new file mode 100644
index 00000000..939a5af4
--- /dev/null
+++ b/scripts/update-tsconfigs.ts
@@ -0,0 +1,42 @@
+/*
+
+npm run update-tsconfigs
+
+(also runs after each pnpm install)
+
+Updates ./packages/<all_packages>/tsconfig.json files
+based on dependencies in package.json
+
+*/
+
+import * as fsp from "node:fs/promises"
+import * as path from "node:path"
+import * as utils from "./utils/index.js";
+
+const modulesData = await utils.getModulesData();
+
+type TsconfigJson = {
+  extends?: string
+  compilerOptions?: {
+    composite?: boolean
+    outDir?: string
+    rootDir?: string
+  }
+  references?: {path: string}[]
+  include?: string[]
+}
+
+for (const data of modulesData) {
+  const tsconfig_path = path.join(utils.PACKAGES_DIR, data.name, 'tsconfig.json')
+  const tsconfig: TsconfigJson = {
+    extends: "../../tsconfig.json",
+    compilerOptions: {
+      composite: true,
+      outDir: "dist",
+      rootDir: "src",
+    },
+    references: data.workspace_deps.map(dep => ({path: `../${dep}`})),
+    include: ["src"]
+  }
+  await fsp.writeFile(tsconfig_path, JSON.stringify(tsconfig, null, 2))
+}
diff --git a/scripts/utils/calculate-bundlesize.ts b/scripts/utils/calculate-bundlesize.ts
index 065a3157..7f50ecce 100644
--- a/scripts/utils/calculate-bundlesize.ts
+++ b/scripts/utils/calculate-bundlesize.ts
@@ -39,7 +39,7 @@ export const getPackageBundlesize = async (
   if (!fs.existsSync(tempDir)) {
     try {
       await fsp.mkdir(tempDir);
-    } catch (e) {}
+    } catch (_) {}
   }
 
   const tempFilename = `${exportName ? `${packageName}_${exportName}` : packageName}_${randomHash}`;
diff --git a/scripts/utils/get-modules-data.ts b/scripts/utils/get-modules-data.ts
index 1f789fe5..cbcdd94b 100644
--- a/scripts/utils/get-modules-data.ts
+++ b/scripts/utils/get-modules-data.ts
@@ -1,45 +1,23 @@
 import path from "node:path";
 import fs from "node:fs";
 import fsp from "node:fs/promises";
-import { MODULE_PREFIX, PACKAGES_DIR, isNonNullable, logLine } from "./utils.js";
-import * as vb from "valibot";
-
-const pkg_schema = vb.object({
-  name: vb.string(),
-  version: vb.string(),
-  description: vb.string(),
-  keywords: vb.optional(vb.array(vb.string())),
-  dependencies: vb.optional(vb.record(vb.string())),
-  peerDependencies: vb.record(vb.string()),
-  primitive: vb.object(
-    {
-      list: vb.array(vb.string()),
-      category: vb.string(),
-      stage: vb.number(),
-    },
-    'package.json lacks "primitive" filed',
-  ),
-});
-
-export type ModulePkgSchema = typeof pkg_schema;
-export type ModulePkg = vb.Output<ModulePkgSchema>;
-
-export function getPackagePkg(name: string): ModulePkg | Error {
-  const pkg_path = path.join(PACKAGES_DIR, name, "package.json");
-
-  if (!fs.existsSync(pkg_path)) {
-    return new Error(`package "${name}" doesn't have package.json`);
-  }
+import { MODULE_PREFIX, PACKAGES_DIR, isNonNullable, log_info } from "./utils.js";
 
-  const pkg = JSON.parse(fs.readFileSync(pkg_path, "utf8")) as unknown;
-  const result = vb.safeParse(pkg_schema, pkg);
-
-  if (!result.success) {
-    const issue = result.issues[0];
-    return new Error(`package "${name}" has invalid package.json: ${issue.message}`);
-  }
+export type PackageJson = {
+  name: string;
+  version: string;
+  description: string;
+  primitive?: PrimitiveData;
+  keywords?: string[];
+  peerDependencies?: {[x: string]: string};
+  devDependencies?: {[x: string]: string};
+  dependencies?: {[x: string]: string};
+}
 
-  return result.output;
+export type PrimitiveData = {
+  list: string[];
+  category: string;
+  stage: number;
 }
 
 export type ModuleData = {
@@ -47,55 +25,59 @@ export type ModuleData = {
   version: string;
   description: string;
   tags: string[];
-  category: string;
-  stage: number;
-  primitives: string[];
+  primitive: PrimitiveData | null;
   workspace_deps: string[];
   peer_deps: string[];
 };
 
-export async function getModulesData(): Promise<ModuleData[]>;
-export async function getModulesData<T>(mapFn: (data: ModuleData) => T | Promise<T>): Promise<T[]>;
-export async function getModulesData<T = ModuleData>(
-  mapFn: (data: ModuleData) => T = moduleData => moduleData as unknown as T,
-): Promise<T[]> {
-  const module_names = await fsp.readdir(PACKAGES_DIR);
+export async function getModuleData(name: string): Promise<ModuleData | Error> {
 
-  const promises = module_names.map(async name => {
-    const pkg = getPackagePkg(name);
+  const pkg_path = path.join(PACKAGES_DIR, name, "package.json");
 
-    if (pkg instanceof Error) {
-      logLine(pkg.message);
-      return null;
+  if (!fs.existsSync(pkg_path)) {
+    return new Error(`package "${name}" doesn't have package.json`);
+  }
+
+  const pkg = JSON.parse(await fsp.readFile(pkg_path, "utf8")) as PackageJson;
+
+  const dependencies = Object.keys(pkg.dependencies ?? {});
+  const peer_deps = Object.keys(pkg.peerDependencies ?? {});
+  const workspace_deps: string[] = [];
+
+  for (const dep of dependencies) {
+    if (dep.startsWith(MODULE_PREFIX)) {
+      const dep_name = dep.slice(MODULE_PREFIX.length);
+      workspace_deps.push(dep_name);
     }
+  }
+
+  const excludedKeywords = ["primitive", "solid", pkg.name];
+
+  return {
+    name,
+    version: pkg.version,
+    description: pkg.description,
+    tags: pkg.keywords?.filter(keyword => !excludedKeywords.includes(keyword)) ?? [],
+    primitive: pkg.primitive ?? null,
+    workspace_deps,
+    peer_deps,
+  };
+}
+
+export async function getModulesData(): Promise<ModuleData[]> {
 
-    const dependencies = Object.keys(pkg.dependencies ?? {});
-    const peer_deps = Object.keys(pkg.peerDependencies);
-    const workspace_deps: string[] = [];
+  const module_names = await fsp.readdir(PACKAGES_DIR);
+
+  const promises = module_names.map(async name => {
+    const module = await getModuleData(name)
 
-    for (const dep of dependencies) {
-      if (dep.startsWith(MODULE_PREFIX)) {
-        const dep_name = dep.slice(MODULE_PREFIX.length);
-        workspace_deps.push(dep_name);
-      }
+    if (module instanceof Error) {
+      log_info(module.message);
+      return null;
     }
 
-    const excludedKeywords = ["primitive", "solid", pkg.name];
-
-    return {
-      data: await mapFn({
-        name,
-        version: pkg.version,
-        description: pkg.description,
-        tags: pkg.keywords?.filter(keyword => !excludedKeywords.includes(keyword)) ?? [],
-        category: pkg.primitive.category,
-        stage: pkg.primitive.stage,
-        primitives: pkg.primitive.list,
-        workspace_deps,
-        peer_deps,
-      }),
-    };
+    return module
   });
 
-  return (await Promise.all(promises)).filter(isNonNullable).map(a => a.data);
+  return (await Promise.all(promises)).filter(isNonNullable)
 }
diff --git a/scripts/utils/utils.ts b/scripts/utils/utils.ts
index 6d7e5833..b9d5be37 100644
--- a/scripts/utils/utils.ts
+++ b/scripts/utils/utils.ts
@@ -1,4 +1,5 @@
 import * as path from "node:path";
+import * as fs from "node:fs";
 import * as fsp from "node:fs/promises";
 import * as url from "node:url";
 
@@ -13,7 +14,7 @@ export const MODULE_PREFIX = "@solid-primitives/";
 
 export function getPackageNameFromCWD(): string | null {
   if (CWD.startsWith(PACKAGES_DIR)) {
-    let name = CWD.slice(PACKAGES_DIR.length + path.sep.length).split(path.sep)[0];
+    const name = CWD.slice(PACKAGES_DIR.length + path.sep.length).split(path.sep)[0];
     if (name !== undefined && name.length > 0) {
       return name;
     }
@@ -22,7 +23,9 @@ export function getPackageNameFromCWD(): string | null {
 }
 
 // eslint-disable-next-line no-console
-export const logLine = (string: string) => console.log(`\x1b[34m${string}\x1b[0m`);
+export const log_info = (string: string) => console.log(`\x1b[34m${string}\x1b[0m`);
+// eslint-disable-next-line no-console
+export const log_error = (string: string) => console.log(`\x1b[31m${string}\x1b[0m`);
 
 export const checkValidPackageName = (name: string) =>
   /[a-z0-9\-]+/.test(name) && name.match(/[a-z0-9\-]+/)![0].length === name.length;
@@ -67,7 +70,7 @@ export async function copyDirectory(src: string, dst: string): Promise<void> {
   await fsp.mkdir(dst, { recursive: true });
   const entries = await fsp.readdir(src, { withFileTypes: true });
 
-  for (let entry of entries) {
+  for (const entry of entries) {
     const src_path = path.join(src, entry.name);
     const dst_path = path.join(dst, entry.name);
 
@@ -83,7 +86,23 @@ export async function pathExists(target: string): Promise<boolean> {
   try {
     await fsp.access(target);
     return true;
-  } catch (err) {
+  } catch (_) {
     return false;
   }
 }
+
+export function getDirLastModifiedTimeSync(dir: string): number {
+  let latest_time = 0
+  
+  try {
+    for (const entry of fs.readdirSync(dir, {withFileTypes: true})) {
+      const full_path = path.join(dir, entry.name)
+      const time = entry.isDirectory() ? getDirLastModifiedTimeSync(full_path) : fs.statSync(full_path).mtimeMs
+      if (time > latest_time) {
+        latest_time = time
+      }
+    }
+  } catch {}
+
+  return latest_time;
+}
diff --git a/site/scripts/generate.ts b/site/scripts/generate.ts
index 64c722b8..021545d9 100644
--- a/site/scripts/generate.ts
+++ b/site/scripts/generate.ts
@@ -14,6 +14,7 @@ import { unified } from "unified";
 import { fileURLToPath } from "url";
 import {
   ModuleData,
+  PrimitiveData,
   formatBytes,
   getModulesData,
   getPackageBundlesize,
@@ -75,9 +76,9 @@ const markdownProcessor = unified()
 /**
  * Parse README.md of each package and generate HTML
  */
-async function generateReadme(module: ModuleData) {
+async function generateReadme(module: ModuleData, primitiveData: PrimitiveData) {
   const primitiveCodeElRegex = new RegExp(
-    `<(code)>((?:&#x3C;|<)?(?:${module.primitives.join("|")})>?)<\/(code)>`,
+    `<(code)>((?:&#x3C;|<)?(?:${primitiveData.list.join("|")})>?)<\/(code)>`,
     "g",
   );
   const readmePath = path.join(packagesPath, module.name, "README.md");
@@ -91,8 +92,8 @@ async function generateReadme(module: ModuleData) {
       /<p>(?=[^]*?<img(?=[^>]+?src="https:\/\/assets\.solidjs\.com\/banner[^"]+")[^>]*?>)[^]*?<\/p>/,
       "",
     )
-    // remove turborepo, size, version, stage ect... img banners
-    .replace(/^\[!\[(?:turborepo|size|version|stage|lerna)\].+$/gm, "")
+    // remove size, version, stage ect... img banners
+    .replace(/^\[!\[(?:size|version|stage|lerna)\].+$/gm, "")
     // replace changelog relative url to github repo changelog
     .replace(/(\[CHANGELOG\.md\])(\(\.\/CHANGELOG\.md\))/i, (_, p1, p2) => {
       if (!p2) return _;
@@ -130,12 +131,12 @@ async function generateReadme(module: ModuleData) {
   );
 }
 
-async function generatePrimitiveSizes(module: ModuleData) {
+async function generatePrimitiveSizes(module: ModuleData, primitiveData: PrimitiveData) {
   if (PACKAGE_COLLAPSED_LIST_OF_PRIMITIVES.has(module.name)) {
     return [];
   }
 
-  const sizes = module.primitives.map(async primitive => {
+  const sizes = primitiveData.list.map(async primitive => {
     const result = await getPackageBundlesize(module.name, {
       exportName: primitive,
       peerDependencies: module.peer_deps,
@@ -173,23 +174,27 @@ async function generatePackageSize(module: ModuleData) {
     await fsp.mkdir(packagesDirDist);
   }
 
-  const packages = await getModulesData<PackageListItem>(async module => {
+  const packages = [] as PackageListItem[]
+  
+  for (let module of await getModulesData()) {
+    if (module.primitive == null) continue
+  
     const [readme, primitives, packageSize] = await Promise.all([
-      generateReadme(module),
-      generatePrimitiveSizes(module),
+      generateReadme(module, module.primitive),
+      generatePrimitiveSizes(module, module.primitive),
       generatePackageSize(module),
     ] as const);
-
+  
     const itemData: PackageListItem = { ...module, primitives, packageSize };
-
+  
     const data: PackageData = { ...itemData, readme };
-
+  
     // write data to individual json file
     const outputFilename = path.join(packagesDirDist, `${module.name}.json`);
     await fsp.writeFile(outputFilename, JSON.stringify(data, null, 2));
-
-    return itemData;
-  });
+  
+    packages.push(itemData)
+  }
 
   // gather all module names into one json file
   await fsp.writeFile(packagesDist, JSON.stringify(packages, null, 2));
diff --git a/template/README.md b/template/README.md
index d6ad836a..de0497ba 100644
--- a/template/README.md
+++ b/template/README.md
@@ -4,7 +4,6 @@
 
 # @solid-primitives/template-primitive
 
-[![turborepo](https://img.shields.io/badge/built%20with-turborepo-cc00ff.svg?style=for-the-badge&logo=turborepo)](https://turborepo.org/)
 [![size](https://img.shields.io/bundlephobia/minzip/@solid-primitives/template-primitive?style=for-the-badge&label=size)](https://bundlephobia.com/package/@solid-primitives/template-primitive)
 [![version](https://img.shields.io/npm/v/@solid-primitives/template-primitive?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/template-primitive)
 [![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process)
diff --git a/template/package.json b/template/package.json
index c234e2b2..47fa1974 100644
--- a/template/package.json
+++ b/template/package.json
@@ -31,7 +31,6 @@
     "dist"
   ],
   "type": "module",
-  "main": "./dist/index.cjs",
   "module": "./dist/index.js",
   "types": "./dist/index.d.ts",
   "browser": {},
@@ -40,16 +39,11 @@
     "import": {
       "types": "./dist/index.d.ts",
       "default": "./dist/index.js"
-    },
-    "require": {
-      "types": "./dist/index.d.cts",
-      "default": "./dist/index.cjs"
     }
   },
   "typesVersions": {},
   "scripts": {
     "dev": "tsx ../../scripts/dev.ts",
-    "build": "tsx ../../scripts/build.ts",
     "vitest": "vitest -c ../../configs/vitest.config.ts",
     "test": "pnpm run vitest",
     "test:ssr": "pnpm run vitest --mode ssr"
diff --git a/template/tsconfig.json b/template/tsconfig.json
index 4082f16a..38c71ce7 100644
--- a/template/tsconfig.json
+++ b/template/tsconfig.json
@@ -1,3 +1,12 @@
 {
-  "extends": "../../tsconfig.json"
-}
+  "extends": "../../tsconfig.json",
+  "compilerOptions": {
+    "composite": true,
+    "outDir": "dist",
+    "rootDir": "src"
+  },
+  "references": [],
+  "include": [
+    "src"
+  ]
+}
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 158f5216..61701d77 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -5,7 +5,6 @@
     "newLine": "LF",
     "lib": ["DOM", "ESNext"],
     "moduleResolution": "NodeNext",
-    "noEmit": true,
     "allowSyntheticDefaultImports": true,
     "strict": true,
     "esModuleInterop": true,
diff --git a/turbo.json b/turbo.json
deleted file mode 100644
index 651c12d9..00000000
--- a/turbo.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "$schema": "https://turborepo.org/schema.json",
-  "pipeline": {
-    "build": {
-      "dependsOn": ["^build"],
-      "outputs": ["dist/**"],
-      "inputs": ["src/**/*"]
-    }
-  },
-  "globalDependencies": ["tsconfig.json", "scripts/build"]
-}


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 10deb9d9..61a1acc8 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -24,14 +24,6 @@ jobs:
       - name: Install dependencies
         run: pnpm install
 
-      - name: Cache turbo build setup
-        uses: actions/cache@v4
-        with:
-          path: node_modules/.cache/turbo
-          key: turbo-${{ github.sha }}
-          restore-keys: |
-            turbo-
-
       - name: Build all packages
         run: pnpm build
 
diff --git a/configs/vitest.config.ts b/configs/vitest.config.ts
index 9f2c6e25..33c93a4e 100644
--- a/configs/vitest.config.ts
+++ b/configs/vitest.config.ts
@@ -5,9 +5,9 @@ import * as utils from "../scripts/utils/index.js"
 const package_name = utils.getPackageNameFromCWD()
 
 if (package_name == null) {
-  utils.logLine("Testing ALL packages...")
+  utils.log_info("Testing ALL packages...")
 } else {
-  utils.logLine("Testing "+package_name+" package...")
+  utils.log_info("Testing "+package_name+" package...")
 }
 
 const from_root = package_name == null