From a2525d3582fb6dcd740669f9aad1548b08a40399 Mon Sep 17 00:00:00 2001 From: JonathanLab Date: Wed, 27 May 2026 15:26:08 +0200 Subject: [PATCH] refactor: new package architecture --- biome.jsonc | 167 +++++++++++++++++++++++ packages/api-client/package.json | 32 +++++ packages/api-client/src/index.ts | 1 + packages/api-client/tsconfig.json | 4 + packages/api-client/tsup.config.ts | 3 + packages/core/package.json | 29 ++++ packages/core/src/index.ts | 1 + packages/core/tsconfig.json | 4 + packages/core/tsup.config.ts | 3 + packages/ui/package.json | 43 ++++++ packages/ui/src/index.ts | 1 + packages/ui/tsconfig.json | 4 + packages/ui/tsup.config.ts | 5 + packages/workspace-client/package.json | 34 +++++ packages/workspace-client/src/index.ts | 1 + packages/workspace-client/tsconfig.json | 4 + packages/workspace-client/tsup.config.ts | 3 + packages/workspace-server/package.json | 22 +++ packages/workspace-server/src/index.ts | 1 + packages/workspace-server/tsconfig.json | 4 + pnpm-lock.yaml | 150 ++++++++++++++++++++ pnpm-workspace.yaml | 10 ++ tooling/tsup-config/index.ts | 15 ++ tooling/tsup-config/package.json | 13 ++ tooling/typescript/base.json | 22 +++ tooling/typescript/node-package.json | 7 + tooling/typescript/package.json | 14 ++ tooling/typescript/react-package.json | 8 ++ 28 files changed, 605 insertions(+) create mode 100644 packages/api-client/package.json create mode 100644 packages/api-client/src/index.ts create mode 100644 packages/api-client/tsconfig.json create mode 100644 packages/api-client/tsup.config.ts create mode 100644 packages/core/package.json create mode 100644 packages/core/src/index.ts create mode 100644 packages/core/tsconfig.json create mode 100644 packages/core/tsup.config.ts create mode 100644 packages/ui/package.json create mode 100644 packages/ui/src/index.ts create mode 100644 packages/ui/tsconfig.json create mode 100644 packages/ui/tsup.config.ts create mode 100644 packages/workspace-client/package.json create mode 100644 packages/workspace-client/src/index.ts create mode 100644 packages/workspace-client/tsconfig.json create mode 100644 packages/workspace-client/tsup.config.ts create mode 100644 packages/workspace-server/package.json create mode 100644 packages/workspace-server/src/index.ts create mode 100644 packages/workspace-server/tsconfig.json create mode 100644 tooling/tsup-config/index.ts create mode 100644 tooling/tsup-config/package.json create mode 100644 tooling/typescript/base.json create mode 100644 tooling/typescript/node-package.json create mode 100644 tooling/typescript/package.json create mode 100644 tooling/typescript/react-package.json diff --git a/biome.jsonc b/biome.jsonc index 5f382f031c..709e8646a4 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -162,6 +162,173 @@ } } }, + { + "includes": ["packages/core/src/**/*.ts", "packages/core/src/**/*.tsx"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "electron", + "react", + "react-dom", + "node:*", + "@posthog/*" + ], + "message": "core is a pure layer that must not depend on any platform-specific dependencies." + } + ] + } + } + } + } + } + }, + { + "includes": [ + "packages/api-client/src/**/*.ts", + "packages/api-client/src/**/*.tsx" + ], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "electron", + "node:*", + "@posthog/*", + "!@posthog/core" + ], + "message": "api-client must run in any JS environment." + } + ] + } + } + } + } + } + }, + { + "includes": [ + "packages/workspace-client/src/**/*.ts", + "packages/workspace-client/src/**/*.tsx" + ], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "electron", + "node:*", + "@posthog/*", + "!@posthog/core", + "!@posthog/api-client", + "!@posthog/workspace-server" + ], + "message": "workspace-client must run in any JS environment." + } + ] + } + } + } + } + } + }, + { + "includes": [ + "packages/platform/src/**/*.ts", + "packages/platform/src/**/*.tsx" + ], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "electron", + "node:*", + "@posthog/*", + "!@posthog/core" + ], + "message": "platform is interface-only." + } + ] + } + } + } + } + } + }, + { + "includes": [ + "packages/workspace-server/src/**/*.ts", + "packages/workspace-server/src/**/*.tsx" + ], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "paths": { + "electron": "workspace-server must be host-agnostic." + }, + "patterns": [ + { + "group": ["@posthog/ui", "@posthog/api-client"], + "message": "workspace-server must not depend on UI or the PostHog API." + } + ] + } + } + } + } + } + }, + { + "includes": ["packages/ui/src/**/*.ts", "packages/ui/src/**/*.tsx"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "electron", + "node:*", + "@posthog/*", + "!@posthog/core", + "!@posthog/api-client", + "!@posthog/workspace-client", + "!@posthog/platform", + "!@posthog/platform/*" + ], + "message": "ui must run in any JS environment." + } + ] + } + } + } + } + } + }, { // Renderer code should use path aliases "includes": [ diff --git a/packages/api-client/package.json b/packages/api-client/package.json new file mode 100644 index 0000000000..d30ae019de --- /dev/null +++ b/packages/api-client/package.json @@ -0,0 +1,32 @@ +{ + "name": "@posthog/api-client", + "version": "1.0.0", + "description": "Client for the PostHog API (auth, projects, task metadata, billing). Pure HTTPS, runs in any JS environment. Constructed via factory function — no DI container.", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "typecheck": "tsc --noEmit", + "clean": "node ../../scripts/rimraf.mjs dist .turbo" + }, + "dependencies": { + "@posthog/core": "workspace:*" + }, + "devDependencies": { + "@posthog/tsconfig": "workspace:*", + "@posthog/tsup-config": "workspace:*", + "tsup": "catalog:", + "typescript": "catalog:" + }, + "files": [ + "dist/**/*", + "src/**/*" + ] +} diff --git a/packages/api-client/src/index.ts b/packages/api-client/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/api-client/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/api-client/tsconfig.json b/packages/api-client/tsconfig.json new file mode 100644 index 0000000000..703bc8a1d2 --- /dev/null +++ b/packages/api-client/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@posthog/tsconfig/base.json", + "include": ["src/**/*"] +} diff --git a/packages/api-client/tsup.config.ts b/packages/api-client/tsup.config.ts new file mode 100644 index 0000000000..a02d67a7a4 --- /dev/null +++ b/packages/api-client/tsup.config.ts @@ -0,0 +1,3 @@ +import { defineLibPackage } from "@posthog/tsup-config"; + +export default defineLibPackage(); diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 0000000000..0e7c14fc71 --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,29 @@ +{ + "name": "@posthog/core", + "version": "1.0.0", + "description": "Zero-dependency pure domain layer. Types, schemas, pure functions. Runs in any JS environment (Node, Bun, browser, RN, edge). No I/O, no platform calls, no framework deps.", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "typecheck": "tsc --noEmit", + "clean": "node ../../scripts/rimraf.mjs dist .turbo" + }, + "devDependencies": { + "@posthog/tsconfig": "workspace:*", + "@posthog/tsup-config": "workspace:*", + "tsup": "catalog:", + "typescript": "catalog:" + }, + "files": [ + "dist/**/*", + "src/**/*" + ] +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 0000000000..703bc8a1d2 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@posthog/tsconfig/base.json", + "include": ["src/**/*"] +} diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts new file mode 100644 index 0000000000..a02d67a7a4 --- /dev/null +++ b/packages/core/tsup.config.ts @@ -0,0 +1,3 @@ +import { defineLibPackage } from "@posthog/tsup-config"; + +export default defineLibPackage(); diff --git a/packages/ui/package.json b/packages/ui/package.json new file mode 100644 index 0000000000..586e09a2b5 --- /dev/null +++ b/packages/ui/package.json @@ -0,0 +1,43 @@ +{ + "name": "@posthog/ui", + "version": "1.0.0", + "description": "React UI layer. Components, stores, hooks. Pure rendering and UI state — no I/O, no business logic. Built on @posthog/quill. Consumed by every host app (desktop, web, mobile-web).", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "typecheck": "tsc --noEmit", + "clean": "node ../../scripts/rimraf.mjs dist .turbo" + }, + "dependencies": { + "@posthog/api-client": "workspace:*", + "@posthog/core": "workspace:*", + "@posthog/platform": "workspace:*", + "@posthog/workspace-client": "workspace:*" + }, + "peerDependencies": { + "react": "catalog:", + "react-dom": "catalog:" + }, + "devDependencies": { + "@posthog/tsconfig": "workspace:*", + "@posthog/tsup-config": "workspace:*", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "react": "catalog:", + "react-dom": "catalog:", + "tsup": "catalog:", + "typescript": "catalog:" + }, + "files": [ + "dist/**/*", + "src/**/*" + ] +} diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/ui/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json new file mode 100644 index 0000000000..d9b10e2eee --- /dev/null +++ b/packages/ui/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@posthog/tsconfig/react-package.json", + "include": ["src/**/*"] +} diff --git a/packages/ui/tsup.config.ts b/packages/ui/tsup.config.ts new file mode 100644 index 0000000000..42c56fb890 --- /dev/null +++ b/packages/ui/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineLibPackage } from "@posthog/tsup-config"; + +export default defineLibPackage({ + external: ["react", "react-dom"], +}); diff --git a/packages/workspace-client/package.json b/packages/workspace-client/package.json new file mode 100644 index 0000000000..3badaf6e04 --- /dev/null +++ b/packages/workspace-client/package.json @@ -0,0 +1,34 @@ +{ + "name": "@posthog/workspace-client", + "version": "1.0.0", + "description": "Client for a workspace-server (local OR sandbox-via-relay). Thin tRPC client; routes via api-client to resolve sandbox endpoints. Runs in any JS environment.", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "typecheck": "tsc --noEmit", + "clean": "node ../../scripts/rimraf.mjs dist .turbo" + }, + "dependencies": { + "@posthog/api-client": "workspace:*", + "@posthog/core": "workspace:*" + }, + "devDependencies": { + "@posthog/tsconfig": "workspace:*", + "@posthog/tsup-config": "workspace:*", + "@posthog/workspace-server": "workspace:*", + "tsup": "catalog:", + "typescript": "catalog:" + }, + "files": [ + "dist/**/*", + "src/**/*" + ] +} diff --git a/packages/workspace-client/src/index.ts b/packages/workspace-client/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/workspace-client/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/workspace-client/tsconfig.json b/packages/workspace-client/tsconfig.json new file mode 100644 index 0000000000..703bc8a1d2 --- /dev/null +++ b/packages/workspace-client/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@posthog/tsconfig/base.json", + "include": ["src/**/*"] +} diff --git a/packages/workspace-client/tsup.config.ts b/packages/workspace-client/tsup.config.ts new file mode 100644 index 0000000000..a02d67a7a4 --- /dev/null +++ b/packages/workspace-client/tsup.config.ts @@ -0,0 +1,3 @@ +import { defineLibPackage } from "@posthog/tsup-config"; + +export default defineLibPackage(); diff --git a/packages/workspace-server/package.json b/packages/workspace-server/package.json new file mode 100644 index 0000000000..d9f5dc6251 --- /dev/null +++ b/packages/workspace-server/package.json @@ -0,0 +1,22 @@ +{ + "name": "@posthog/workspace-server", + "version": "1.0.0", + "description": "Workspace server: hosts privileged local/sandbox work (git, fs, watchers, processes) behind a tRPC server", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } + }, + "scripts": { + "typecheck": "tsc --noEmit", + "clean": "node ../../scripts/rimraf.mjs .turbo" + }, + "devDependencies": { + "@posthog/tsconfig": "workspace:*", + "@types/node": "catalog:", + "typescript": "catalog:" + } +} diff --git a/packages/workspace-server/src/index.ts b/packages/workspace-server/src/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/packages/workspace-server/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/workspace-server/tsconfig.json b/packages/workspace-server/tsconfig.json new file mode 100644 index 0000000000..d8691e538c --- /dev/null +++ b/packages/workspace-server/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@posthog/tsconfig/node-package.json", + "include": ["src/**/*"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5562a48234..3eac2504c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,30 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@types/node': + specifier: ^20.0.0 + version: 20.19.41 + '@types/react': + specifier: ^19.1.0 + version: 19.2.11 + '@types/react-dom': + specifier: ^19.1.0 + version: 19.2.3 + react: + specifier: 19.1.0 + version: 19.1.0 + react-dom: + specifier: 19.1.0 + version: 19.1.0 + tsup: + specifier: ^8.5.1 + version: 8.5.1 + typescript: + specifier: ^5.5.0 + version: 5.9.3 + patchedDependencies: node-pty: hash: 4dfdf785f5ac51a03f5d6032371cebe89036381acd403621f250a896245647c5 @@ -800,6 +824,40 @@ importers: specifier: ^2.1.8 version: 2.1.9(@types/node@25.2.0)(jsdom@26.1.0)(lightningcss@1.32.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(terser@5.46.0) + packages/api-client: + dependencies: + '@posthog/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@posthog/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + '@posthog/tsup-config': + specifier: workspace:* + version: link:../../tooling/tsup-config + tsup: + specifier: 'catalog:' + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + typescript: + specifier: 'catalog:' + version: 5.9.3 + + packages/core: + devDependencies: + '@posthog/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + '@posthog/tsup-config': + specifier: workspace:* + version: link:../../tooling/tsup-config + tsup: + specifier: 'catalog:' + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + typescript: + specifier: 'catalog:' + version: 5.9.3 + packages/electron-trpc: devDependencies: '@trpc/client': @@ -895,6 +953,91 @@ importers: specifier: ^5.5.0 version: 5.9.3 + packages/ui: + dependencies: + '@posthog/api-client': + specifier: workspace:* + version: link:../api-client + '@posthog/core': + specifier: workspace:* + version: link:../core + '@posthog/platform': + specifier: workspace:* + version: link:../platform + '@posthog/workspace-client': + specifier: workspace:* + version: link:../workspace-client + devDependencies: + '@posthog/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + '@posthog/tsup-config': + specifier: workspace:* + version: link:../../tooling/tsup-config + '@types/react': + specifier: 'catalog:' + version: 19.2.11 + '@types/react-dom': + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.11) + react: + specifier: 'catalog:' + version: 19.1.0 + react-dom: + specifier: 'catalog:' + version: 19.1.0(react@19.1.0) + tsup: + specifier: 'catalog:' + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + typescript: + specifier: 'catalog:' + version: 5.9.3 + + packages/workspace-client: + dependencies: + '@posthog/api-client': + specifier: workspace:* + version: link:../api-client + '@posthog/core': + specifier: workspace:* + version: link:../core + devDependencies: + '@posthog/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + '@posthog/tsup-config': + specifier: workspace:* + version: link:../../tooling/tsup-config + '@posthog/workspace-server': + specifier: workspace:* + version: link:../workspace-server + tsup: + specifier: 'catalog:' + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + typescript: + specifier: 'catalog:' + version: 5.9.3 + + packages/workspace-server: + devDependencies: + '@posthog/tsconfig': + specifier: workspace:* + version: link:../../tooling/typescript + '@types/node': + specifier: 'catalog:' + version: 20.19.41 + typescript: + specifier: 'catalog:' + version: 5.9.3 + + tooling/tsup-config: + dependencies: + tsup: + specifier: 'catalog:' + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + + tooling/typescript: {} + packages: '@0no-co/graphql.web@1.2.0': @@ -5408,6 +5551,9 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} + '@types/node@20.19.41': + resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==} + '@types/node@22.19.8': resolution: {integrity: sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA==} @@ -17587,6 +17733,10 @@ snapshots: '@types/node@16.9.1': {} + '@types/node@20.19.41': + dependencies: + undici-types: 6.21.0 + '@types/node@22.19.8': dependencies: undici-types: 6.21.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2ebaf87ae6..b95dd26d0b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,16 @@ packages: - apps/* - packages/* + - tooling/* + +catalog: + typescript: ^5.5.0 + tsup: ^8.5.1 + "@types/node": ^20.0.0 + react: 19.1.0 + react-dom: 19.1.0 + "@types/react": ^19.1.0 + "@types/react-dom": ^19.1.0 ignoredBuiltDependencies: - msw diff --git a/tooling/tsup-config/index.ts b/tooling/tsup-config/index.ts new file mode 100644 index 0000000000..7ab72a0c0e --- /dev/null +++ b/tooling/tsup-config/index.ts @@ -0,0 +1,15 @@ +import { defineConfig, type Options } from "tsup"; + +export function defineLibPackage(overrides: Options = {}) { + return defineConfig({ + entry: ["src/index.ts"], + format: ["esm"], + dts: true, + sourcemap: true, + clean: true, + splitting: false, + outDir: "dist", + target: "es2022", + ...overrides, + }); +} diff --git a/tooling/tsup-config/package.json b/tooling/tsup-config/package.json new file mode 100644 index 0000000000..e8870d014e --- /dev/null +++ b/tooling/tsup-config/package.json @@ -0,0 +1,13 @@ +{ + "name": "@posthog/tsup-config", + "private": true, + "version": "0.1.0", + "description": "Shared tsup config factory for workspace packages", + "type": "module", + "exports": { + ".": "./index.ts" + }, + "dependencies": { + "tsup": "catalog:" + } +} diff --git a/tooling/typescript/base.json b/tooling/typescript/base.json new file mode 100644 index 0000000000..72f86e4a62 --- /dev/null +++ b/tooling/typescript/base.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ES2022", + "lib": ["ESNext"], + "module": "ESNext", + "moduleResolution": "Bundler", + "moduleDetection": "force", + "allowJs": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "isolatedModules": true, + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true + }, + "exclude": ["node_modules", "dist", "build", ".next", ".turbo"] +} diff --git a/tooling/typescript/node-package.json b/tooling/typescript/node-package.json new file mode 100644 index 0000000000..1693726e87 --- /dev/null +++ b/tooling/typescript/node-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "types": ["node"] + } +} diff --git a/tooling/typescript/package.json b/tooling/typescript/package.json new file mode 100644 index 0000000000..9696374f49 --- /dev/null +++ b/tooling/typescript/package.json @@ -0,0 +1,14 @@ +{ + "name": "@posthog/tsconfig", + "private": true, + "version": "0.1.0", + "description": "Shared TypeScript configurations for PostHog Code workspace", + "exports": { + "./base.json": "./base.json", + "./node-package.json": "./node-package.json", + "./react-package.json": "./react-package.json" + }, + "files": [ + "*.json" + ] +} diff --git a/tooling/typescript/react-package.json b/tooling/typescript/react-package.json new file mode 100644 index 0000000000..a82244de0a --- /dev/null +++ b/tooling/typescript/react-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "jsx": "react-jsx" + } +}