diff --git a/.changeset/metal-games-hang.md b/.changeset/metal-games-hang.md new file mode 100644 index 0000000000..b1ed2381b8 --- /dev/null +++ b/.changeset/metal-games-hang.md @@ -0,0 +1,5 @@ +--- +"@tanstack/angular-query-experimental": patch +--- + +build: switch to tsdown diff --git a/knip.ts b/knip.ts index 68d2c4a93d..f86cb38bac 100644 --- a/knip.ts +++ b/knip.ts @@ -12,10 +12,7 @@ export default { ignoreDependencies: ['react', 'react-dom'], }, 'packages/angular-query-experimental': { - entry: [ - 'src/devtools/production/index.ts!', - 'src/devtools-panel/production/index.ts!', - ], + ignore: ['scripts/prepack.js'], // Strict mode excludes optional dependencies. Read the declared names // so removing a declaration still causes an unlisted dependency error. ignoreDependencies: Object.keys( diff --git a/packages/angular-query-experimental/package.json b/packages/angular-query-experimental/package.json index 119887324d..451901949c 100644 --- a/packages/angular-query-experimental/package.json +++ b/packages/angular-query-experimental/package.json @@ -39,48 +39,44 @@ "test:types:ts70": "node ../../node_modules/typescript70/lib/tsc.js --project tsconfig.json --outDir .cache/test-types/ts70 --tsBuildInfoFile .cache/test-types/ts70.tsbuildinfo", "test:lib": "vitest", "test:lib:dev": "pnpm run test:lib --watch", - "test:build": "pnpm pack && publint ./dist/*.tgz --strict && attw ./dist/*.tgz; premove ./dist/*.tgz", - "build": "vite build", - "prepack": "node scripts/prepack.js" + "build": "tsdown --tsconfig tsconfig.prod.json" }, "type": "module", - "types": "dist/index.d.ts", + "types": "dist/index.d.mts", "module": "dist/index.mjs", "exports": { ".": { "@tanstack/custom-condition": "./src/index.ts", - "types": "./dist/index.d.ts", + "types": "./dist/index.d.mts", "default": "./dist/index.mjs" }, - "./package.json": "./package.json", "./inject-queries-experimental": { - "types": "./dist/inject-queries-experimental/index.d.ts", + "types": "./dist/inject-queries-experimental/index.d.mts", "default": "./dist/inject-queries-experimental/index.mjs" }, "./devtools": { - "types": "./dist/devtools/index.d.ts", + "types": "./dist/devtools/index.d.mts", "development": "./dist/devtools/index.mjs", "default": "./dist/devtools/stub.mjs" }, "./devtools/production": { - "types": "./dist/devtools/production/index.d.ts", + "types": "./dist/devtools/production/index.d.mts", "default": "./dist/devtools/index.mjs" }, "./devtools-panel": { - "types": "./dist/devtools-panel/index.d.ts", + "types": "./dist/devtools-panel/index.d.mts", "development": "./dist/devtools-panel/index.mjs", "default": "./dist/devtools-panel/stub.mjs" }, "./devtools-panel/production": { - "types": "./dist/devtools-panel/production/index.d.ts", + "types": "./dist/devtools-panel/production/index.d.mts", "default": "./dist/devtools-panel/index.mjs" } }, "sideEffects": false, "files": [ - "**/*.d.ts", - "**/*.mjs", - "**/*.mjs.map" + "dist", + "src" ], "dependencies": { "@tanstack/query-core": "workspace:*" @@ -93,10 +89,7 @@ "@tanstack/query-test-utils": "workspace:*", "@testing-library/angular": "^18.0.0", "npm-run-all2": "^9.0.3", - "rxjs": "^7.8.2", - "vite-plugin-dts": "4.2.3", - "vite-plugin-externalize-deps": "^0.9.0", - "vite-tsconfig-paths": "^5.1.4" + "rxjs": "^7.8.2" }, "optionalDependencies": { "@tanstack/query-devtools": "workspace:*" @@ -104,9 +97,5 @@ "peerDependencies": { "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0" - }, - "publishConfig": { - "directory": "dist", - "linkDirectory": false } } diff --git a/packages/angular-query-experimental/tsconfig.prod.json b/packages/angular-query-experimental/tsconfig.prod.json index 0f5fee44cf..2bb29fdf02 100644 --- a/packages/angular-query-experimental/tsconfig.prod.json +++ b/packages/angular-query-experimental/tsconfig.prod.json @@ -3,12 +3,7 @@ "compilerOptions": { "incremental": false, "composite": false, - "rootDir": "../../", - "customConditions": null, - // vite-plugin-dts must not depend on a generated query-core build. - "paths": { - "@tanstack/query-core": ["../query-core/src/index.ts"] - } + "rootDir": "../../" }, "include": ["src"], "exclude": ["src/__tests__"] diff --git a/packages/angular-query-experimental/tsdown.config.ts b/packages/angular-query-experimental/tsdown.config.ts new file mode 100644 index 0000000000..b2ac75a1f1 --- /dev/null +++ b/packages/angular-query-experimental/tsdown.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'tsdown' + +export default defineConfig({ + entry: ['src/**/*.ts', '!src/__tests__/**'], + format: ['esm'], + target: ['chrome91', 'firefox90', 'edge91', 'safari15', 'ios15', 'opera77'], + // Rolldown lowers private fields for browser target arrays. Keep the + // transform target at ES2022 to match the syntax that tsup emitted. + inputOptions: { transform: { target: 'es2022' } }, + outDir: 'dist', + unbundle: true, + dts: true, + fixedExtension: true, + sourcemap: true, + clean: true, + publint: { + strict: true, + }, + attw: { + profile: 'esm-only', + level: 'error', + }, +}) diff --git a/packages/angular-query-experimental/vite.config.ts b/packages/angular-query-experimental/vite.config.ts index d5337c94ea..5ae7a3f751 100644 --- a/packages/angular-query-experimental/vite.config.ts +++ b/packages/angular-query-experimental/vite.config.ts @@ -1,30 +1,5 @@ -import { defineConfig, mergeConfig } from 'vitest/config' -import { externalizeDeps } from 'vite-plugin-externalize-deps' -import tsconfigPaths from 'vite-tsconfig-paths' -import dts from 'vite-plugin-dts' +import { defineConfig } from 'vitest/config' import packageJson from './package.json' -import type { Options } from '@tanstack/vite-config' - -function ensureImportFileExtension({ - content, - extension, -}: { - content: string - extension: string -}) { - // replace e.g. `import { foo } from './foo'` with `import { foo } from './foo.js'` - content = content.replace( - /(im|ex)port\s[\w{}/*\s,]+from\s['"](?:\.\.?\/)+?[^.'"]+(?=['"];?)/gm, - `$&.${extension}`, - ) - - // replace e.g. `import('./foo')` with `import('./foo.js')` - content = content.replace( - /import\(['"](?:\.\.?\/)+?[^.'"]+(?=['"];?)/gm, - `$&.${extension}`, - ) - return content -} const config = defineConfig({ // fix from https://github.com/vitest-dev/vitest/issues/6992#issuecomment-2509408660 @@ -56,76 +31,4 @@ const config = defineConfig({ }, }) -// copy from @tanstack/config/vite with changes: -// - build - lib - fileName: [name.mjs] -// - rollup - output - preserveModulesRoot: src -export const tanstackViteConfig = (options: Options) => { - const outDir = options.outDir ?? 'dist' - const cjs = options.cjs ?? true - - return defineConfig({ - plugins: [ - externalizeDeps({ include: options.externalDeps ?? [] }), - tsconfigPaths({ - projects: options.tsconfigPath ? [options.tsconfigPath] : undefined, - }), - dts({ - outDir, - entryRoot: options.srcDir, - include: options.srcDir, - exclude: options.exclude, - tsconfigPath: options.tsconfigPath, - compilerOptions: { - module: 99, // ESNext - declarationMap: false, - }, - beforeWriteFile: (filePath, content) => { - return { - filePath, - content: ensureImportFileExtension({ content, extension: 'js' }), - } - }, - afterDiagnostic: (diagnostics) => { - if (diagnostics.length > 0) { - console.error('Please fix the above type errors') - process.exit(1) - } - }, - }), - ], - build: { - outDir, - minify: false, - sourcemap: true, - lib: { - entry: options.entry, - formats: cjs ? ['es', 'cjs'] : ['es'], - fileName: () => '[name].mjs', - }, - rollupOptions: { - output: { - preserveModules: true, - preserveModulesRoot: 'src', - }, - }, - }, - }) -} - -export default mergeConfig( - config, - tanstackViteConfig({ - cjs: false, - entry: [ - './src/index.ts', - './src/inject-queries-experimental/index.ts', - './src/devtools-panel/index.ts', - './src/devtools-panel/stub.ts', - './src/devtools/index.ts', - './src/devtools/stub.ts', - ], - exclude: ['src/__tests__'], - srcDir: './src', - tsconfigPath: 'tsconfig.prod.json', - }), -) +export default config diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 853280fdf5..654dbc64e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2638,21 +2638,10 @@ importers: rxjs: specifier: ^7.8.2 version: 7.8.2 - vite-plugin-dts: - specifier: 4.2.3 - version: 4.2.3(@types/node@22.19.15)(rollup@4.60.1)(supports-color@7.2.0)(typescript@6.0.3)(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) - vite-plugin-externalize-deps: - specifier: ^0.9.0 - version: 0.9.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) - vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(supports-color@7.2.0)(typescript@6.0.3)(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) - linkDirectory: false optionalDependencies: '@tanstack/query-devtools': specifier: workspace:* version: link:../query-devtools - publishDirectory: dist packages/angular-query-persist-client: dependencies: @@ -16284,11 +16273,6 @@ packages: peerDependencies: vite: ^6.4.1 - vite-plugin-externalize-deps@0.9.0: - resolution: {integrity: sha512-wg3qb5gCy2d1KpPKyD9wkXMcYJ84yjgziHrStq9/8R7chhUC73mhQz+tVtvhFiICQHsBn1pnkY4IBbPqF9JHNw==} - peerDependencies: - vite: ^6.4.1 - vite-plugin-solid@2.11.14: resolution: {integrity: sha512-7ZVBt8rpoyqmlwin2kRIUveaHoF6/kulY7gsnD+qFh4nS29V4OPAnw+ojoAspXIjObiL9o1xh9a/nTuYHm02Rw==} peerDependencies: @@ -33019,10 +33003,6 @@ snapshots: dependencies: vite: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - vite-plugin-externalize-deps@0.9.0(vite@6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)): - dependencies: - vite: 6.4.1(@types/node@22.19.15)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - vite-plugin-solid@2.11.14(@testing-library/jest-dom@6.9.1)(solid-js@1.9.15)(supports-color@10.2.2)(vite@6.4.1(@types/node@22.19.15)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.90.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)): dependencies: '@babel/core': 7.29.7(supports-color@10.2.2)