From 967c231d2afaffb590fde534d61d202b8d765cfa Mon Sep 17 00:00:00 2001 From: Omer Gronich <59396491+OmerGronich@users.noreply.github.com> Date: Sun, 13 Apr 2025 20:42:49 +0300 Subject: [PATCH 1/3] feat(angular-query): add angular-persist-query-client * feat(angular-query): - Created isRestoring injection token and provider - handled restoration phase in create-base-query.ts - handled restoration phase in * feat(angular-query): created package for experimental persistence support, and the withPersistQueryClient feature * test(persistQuery): add tests for withPersistQueryClient * docs(angular-query): add basic persister example * fix(angular-query): synced angular versions in new package * fix(angular-query): commit before ng update * feat(angular-query): updated example to v18 * fix(angular-query): fixed project name to basic-persister * feat(angular-query): updated example basic-persister to v19 * feat(angular-query): included back the persister package after angular migration * feat(angular-query): migrate to provideEnvironmentInitializer * fix(angular-query): fix eslint issues in inject-queries.ts * Revert "feat(angular-query): migrate to provideEnvironmentInitializer" This reverts commit af5b47b31511dd2db180abfd92f08541f29532d4. * fix(angular-query): only track the isRestoring in the effect * fix(angular-query): removed conditional _isRestoring * ci: apply automated fixes * fix(angular-query): used effect onCleanup instead of destroy ref * Update examples/angular/basic-persister/.devcontainer/devcontainer.json Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update examples/angular/basic-persister/package.json Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update examples/angular/basic-persister/src/index.html Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update examples/angular/basic-persister/tsconfig.json Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update examples/angular/basic-persister/tsconfig.json Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update examples/angular/basic-persister/tsconfig.json Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * Update packages/angular-query-experimental/src/inject-is-restoring.ts Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> * fix(angular-query): fixed lock file * fix(angular-query): aligned package.json versions * added missing dep from basic-persister example * Added a more complex example for persistence. This examples demonstrates how to selectively persist queries to different persisters. * fix(angular-query) bumped versions to 5.62.4 * refactor(angular-query) refactored to implicit return * fix(angular-query) bump angular persister package and examples version * fix(angular-query) fixed eslint errors * refactor(angular-query) set initial `isRestoring` to true to match the React adapter logic * Revert "refactor(angular-query) set initial `isRestoring` to true to match the React adapter logic" This reverts commit 235bbabebf0dbc64d0b3eb767b2b858047c9929a. * fix(angular-query) fixed formatting of JSDOC comment ruined by eslint * update build configs * zoneless unit tests * replace deprecated injectQueryClient * createBaseQuery is always run in injection context, remove inject(Injector) * remove api extractor config * update example dependencies * comment out from publish script for now * refactor(persist-query-client): simplify configuration by removing array structure for persistOptions * refactor(angular-query-persist-client): removed experimental from package name and updated configurations * fix example * fix outdated comment * exclude from preview for now * mark package as private instead * configure injectIsRestoring injector through options object --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Arnoud <6420061+arnoud-dv@users.noreply.github.com> --- .../.devcontainer/devcontainer.json | 4 + .../angular/basic-persister/.eslintrc.cjs | 6 + examples/angular/basic-persister/README.md | 6 + examples/angular/basic-persister/angular.json | 104 +++++ examples/angular/basic-persister/package.json | 30 ++ .../src/app/app.component.html | 10 + .../basic-persister/src/app/app.component.ts | 13 + .../basic-persister/src/app/app.config.ts | 35 ++ .../src/app/components/post.component.html | 19 + .../src/app/components/post.component.ts | 39 ++ .../src/app/components/posts.component.html | 39 ++ .../src/app/components/posts.component.ts | 28 ++ .../src/app/services/posts-service.ts | 21 + .../angular/basic-persister/src/favicon.ico | Bin 0 -> 15086 bytes .../angular/basic-persister/src/index.html | 13 + examples/angular/basic-persister/src/main.ts | 7 + .../angular/basic-persister/tsconfig.app.json | 9 + .../angular/basic-persister/tsconfig.json | 31 ++ .../angular-persist-query-client/.attw.json | 3 + .../eslint.config.js | 31 ++ .../angular-persist-query-client/package.json | 75 ++++ .../root.eslint.config.js | 1 + .../root.vite.config.js | 1 + .../src/__tests__/utils.ts | 12 + .../with-persist-query-client.test.ts | 406 ++++++++++++++++++ .../angular-persist-query-client/src/index.ts | 4 + .../src/test-setup.ts | 10 + .../src/with-persist-query-client.ts | 88 ++++ .../tsconfig.json | 20 + .../tsconfig.prod.json | 8 + .../tsup.config.js | 13 + .../vite.config.ts | 23 + .../src/create-base-query.ts | 60 +-- .../angular-query-experimental/src/index.ts | 1 + .../src/inject-is-restoring.ts | 50 +++ .../src/inject-queries.ts | 18 +- .../src/providers.ts | 13 +- pnpm-lock.yaml | 193 +++++++-- scripts/publish.js | 5 + 39 files changed, 1375 insertions(+), 74 deletions(-) create mode 100644 examples/angular/basic-persister/.devcontainer/devcontainer.json create mode 100644 examples/angular/basic-persister/.eslintrc.cjs create mode 100644 examples/angular/basic-persister/README.md create mode 100644 examples/angular/basic-persister/angular.json create mode 100644 examples/angular/basic-persister/package.json create mode 100644 examples/angular/basic-persister/src/app/app.component.html create mode 100644 examples/angular/basic-persister/src/app/app.component.ts create mode 100644 examples/angular/basic-persister/src/app/app.config.ts create mode 100644 examples/angular/basic-persister/src/app/components/post.component.html create mode 100644 examples/angular/basic-persister/src/app/components/post.component.ts create mode 100644 examples/angular/basic-persister/src/app/components/posts.component.html create mode 100644 examples/angular/basic-persister/src/app/components/posts.component.ts create mode 100644 examples/angular/basic-persister/src/app/services/posts-service.ts create mode 100644 examples/angular/basic-persister/src/favicon.ico create mode 100644 examples/angular/basic-persister/src/index.html create mode 100644 examples/angular/basic-persister/src/main.ts create mode 100644 examples/angular/basic-persister/tsconfig.app.json create mode 100644 examples/angular/basic-persister/tsconfig.json create mode 100644 packages/angular-persist-query-client/.attw.json create mode 100644 packages/angular-persist-query-client/eslint.config.js create mode 100644 packages/angular-persist-query-client/package.json create mode 120000 packages/angular-persist-query-client/root.eslint.config.js create mode 120000 packages/angular-persist-query-client/root.vite.config.js create mode 100644 packages/angular-persist-query-client/src/__tests__/utils.ts create mode 100644 packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts create mode 100644 packages/angular-persist-query-client/src/index.ts create mode 100644 packages/angular-persist-query-client/src/test-setup.ts create mode 100644 packages/angular-persist-query-client/src/with-persist-query-client.ts create mode 100644 packages/angular-persist-query-client/tsconfig.json create mode 100644 packages/angular-persist-query-client/tsconfig.prod.json create mode 100644 packages/angular-persist-query-client/tsup.config.js create mode 100644 packages/angular-persist-query-client/vite.config.ts create mode 100644 packages/angular-query-experimental/src/inject-is-restoring.ts diff --git a/examples/angular/basic-persister/.devcontainer/devcontainer.json b/examples/angular/basic-persister/.devcontainer/devcontainer.json new file mode 100644 index 00000000000..365adf8f4c3 --- /dev/null +++ b/examples/angular/basic-persister/.devcontainer/devcontainer.json @@ -0,0 +1,4 @@ +{ + "name": "Node.js", + "image": "mcr.microsoft.com/devcontainers/javascript-node:22" +} diff --git a/examples/angular/basic-persister/.eslintrc.cjs b/examples/angular/basic-persister/.eslintrc.cjs new file mode 100644 index 00000000000..cca134ce166 --- /dev/null +++ b/examples/angular/basic-persister/.eslintrc.cjs @@ -0,0 +1,6 @@ +// @ts-check + +/** @type {import('eslint').Linter.Config} */ +const config = {} + +module.exports = config diff --git a/examples/angular/basic-persister/README.md b/examples/angular/basic-persister/README.md new file mode 100644 index 00000000000..47d5931979a --- /dev/null +++ b/examples/angular/basic-persister/README.md @@ -0,0 +1,6 @@ +# TanStack Query Angular basic persister example + +To run this example: + +- `npm install` or `yarn` or `pnpm i` or `bun i` +- `npm run start` or `yarn start` or `pnpm start` or `bun start` diff --git a/examples/angular/basic-persister/angular.json b/examples/angular/basic-persister/angular.json new file mode 100644 index 00000000000..64adfea7c48 --- /dev/null +++ b/examples/angular/basic-persister/angular.json @@ -0,0 +1,104 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "cli": { + "packageManager": "pnpm", + "analytics": false, + "cache": { + "enabled": false + } + }, + "newProjectRoot": "projects", + "projects": { + "basic-persister": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "inlineTemplate": true, + "inlineStyle": true, + "skipTests": true + }, + "@schematics/angular:class": { + "skipTests": true + }, + "@schematics/angular:directive": { + "skipTests": true + }, + "@schematics/angular:guard": { + "skipTests": true + }, + "@schematics/angular:interceptor": { + "skipTests": true + }, + "@schematics/angular:pipe": { + "skipTests": true + }, + "@schematics/angular:resolver": { + "skipTests": true + }, + "@schematics/angular:service": { + "skipTests": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular/build:application", + "options": { + "outputPath": "dist/basic-persister", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "tsconfig.app.json", + "assets": ["src/favicon.ico", "src/assets"], + "styles": [], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular/build:dev-server", + "configurations": { + "production": { + "buildTarget": "basic-persister:build:production" + }, + "development": { + "buildTarget": "basic-persister:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular/build:extract-i18n", + "options": { + "buildTarget": "basic-persister:build" + } + } + } + } + } +} diff --git a/examples/angular/basic-persister/package.json b/examples/angular/basic-persister/package.json new file mode 100644 index 00000000000..3b04dbd562b --- /dev/null +++ b/examples/angular/basic-persister/package.json @@ -0,0 +1,30 @@ +{ + "name": "@tanstack/query-example-angular-basic-persister", + "type": "module", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development" + }, + "private": true, + "dependencies": { + "@angular/common": "^19.2.4", + "@angular/compiler": "^19.2.4", + "@angular/core": "^19.2.4", + "@angular/platform-browser": "^19.2.4", + "@angular/platform-browser-dynamic": "^19.2.4", + "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-persist-client": "^5.62.7", + "@tanstack/query-sync-storage-persister": "^5.73.3", + "rxjs": "^7.8.2", + "tslib": "^2.8.1", + "zone.js": "^0.15.0" + }, + "devDependencies": { + "@angular/build": "^19.2.5", + "@angular/cli": "^19.2.5", + "@angular/compiler-cli": "^19.2.4", + "typescript": "5.8.3" + } +} diff --git a/examples/angular/basic-persister/src/app/app.component.html b/examples/angular/basic-persister/src/app/app.component.html new file mode 100644 index 00000000000..4c21f9e8792 --- /dev/null +++ b/examples/angular/basic-persister/src/app/app.component.html @@ -0,0 +1,10 @@ +
+ Try to mock offline behavior with the button in the devtools. You can navigate + around as long as there is already data in the cache. You'll get a refetch as + soon as you go "online" again. +
+@if (postId() > -1) { +{{ post.body }}
++ + + {{ post.title }} +
+ } +mQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWk GNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!Ez jeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1d t)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1 g~2B{%N-!mWz<`)G) >V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm <`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x 24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^T w$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7 *Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9 {XjwBm qAiOxOL` zt?XK-iTEOWV}f >Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/examples/angular/basic-persister/src/index.html b/examples/angular/basic-persister/src/index.html new file mode 100644 index 00000000000..2e262442e17 --- /dev/null +++ b/examples/angular/basic-persister/src/index.html @@ -0,0 +1,13 @@ + + + + + TanStack Query Angular basic persister example ++ + + + + + + diff --git a/examples/angular/basic-persister/src/main.ts b/examples/angular/basic-persister/src/main.ts new file mode 100644 index 00000000000..aa33a0b9ff3 --- /dev/null +++ b/examples/angular/basic-persister/src/main.ts @@ -0,0 +1,7 @@ +import { bootstrapApplication } from '@angular/platform-browser' +import { appConfig } from './app/app.config' +import { BasicExampleComponent } from './app/app.component' + +bootstrapApplication(BasicExampleComponent, appConfig).catch((err) => + console.error(err), +) diff --git a/examples/angular/basic-persister/tsconfig.app.json b/examples/angular/basic-persister/tsconfig.app.json new file mode 100644 index 00000000000..5b9d3c5ecb0 --- /dev/null +++ b/examples/angular/basic-persister/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": ["src/main.ts"], + "include": ["src/**/*.d.ts"] +} diff --git a/examples/angular/basic-persister/tsconfig.json b/examples/angular/basic-persister/tsconfig.json new file mode 100644 index 00000000000..d0d73c8bebb --- /dev/null +++ b/examples/angular/basic-persister/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "bundler", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": ["ES2022", "dom"] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictStandalone": true, + "strictTemplates": true + } +} diff --git a/packages/angular-persist-query-client/.attw.json b/packages/angular-persist-query-client/.attw.json new file mode 100644 index 00000000000..ce409e67a82 --- /dev/null +++ b/packages/angular-persist-query-client/.attw.json @@ -0,0 +1,3 @@ +{ + "ignoreRules": ["cjs-resolves-to-esm", "no-resolution"] +} diff --git a/packages/angular-persist-query-client/eslint.config.js b/packages/angular-persist-query-client/eslint.config.js new file mode 100644 index 00000000000..84b0029c8e7 --- /dev/null +++ b/packages/angular-persist-query-client/eslint.config.js @@ -0,0 +1,31 @@ +// @ts-check + +import pluginJsdoc from 'eslint-plugin-jsdoc' +import rootConfig from './root.eslint.config.js' + +export default [ + ...rootConfig, + pluginJsdoc.configs['flat/recommended-typescript'], + { + rules: { + 'cspell/spellchecker': [ + 'warn', + { + cspell: { + ignoreRegExpList: ['\\ɵ.+'], + }, + }, + ], + 'jsdoc/require-hyphen-before-param-description': 1, + 'jsdoc/sort-tags': 1, + 'jsdoc/require-throws': 1, + 'jsdoc/check-tag-names': [ + 'warn', + { + // Not compatible with Api Extractor @public + typed: false, + }, + ], + }, + }, +] diff --git a/packages/angular-persist-query-client/package.json b/packages/angular-persist-query-client/package.json new file mode 100644 index 00000000000..59d27f8e8cd --- /dev/null +++ b/packages/angular-persist-query-client/package.json @@ -0,0 +1,75 @@ +{ + "name": "@tanstack/angular-query-persist-client", + "private": true, + "version": "5.62.7", + "description": "Angular bindings to work with persisters in TanStack/angular-query", + "author": "Omer Gronich", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/TanStack/query.git", + "directory": "packages/angular-query-persist-client" + }, + "homepage": "https://tanstack.com/query", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "scripts": { + "clean": "premove ./build ./coverage ./dist-ts", + "compile": "tsc --build", + "test:eslint": "eslint ./src", + "test:types": "npm-run-all --serial test:types:*", + "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js --build", + "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js --build", + "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js --build", + "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js --build", + "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js --build", + "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js --build", + "test:types:ts56": "node ../../node_modules/typescript56/lib/tsc.js --build", + "test:types:ts57": "node ../../node_modules/typescript57/lib/tsc.js --build", + "test:types:tscurrent": "tsc --build", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", + "test:build": "publint --strict && attw --pack", + "build": "pnpm build:tsup", + "build:tsup": "tsup --tsconfig tsconfig.prod.json" + }, + "type": "module", + "types": "build/index.d.ts", + "module": "build/index.mjs", + "exports": { + ".": { + "types": "./build/index.d.ts", + "default": "./build/index.mjs" + }, + "./package.json": { + "default": "./package.json" + } + }, + "sideEffects": false, + "files": [ + "build", + "src", + "!src/__tests__" + ], + "dependencies": { + "@tanstack/query-persist-client-core": "workspace:*" + }, + "devDependencies": { + "@angular/compiler": "^19.2.4", + "@angular/core": "^19.2.4", + "@angular/platform-browser": "^19.2.4", + "@angular/platform-browser-dynamic": "^19.2.4", + "@tanstack/angular-query-experimental": "workspace:*", + "@testing-library/angular": "^17.3.2", + "@testing-library/dom": "^10.4.0", + "eslint-plugin-jsdoc": "^50.5.0", + "npm-run-all2": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@tanstack/angular-query-experimental": "workspace:*" + } +} diff --git a/packages/angular-persist-query-client/root.eslint.config.js b/packages/angular-persist-query-client/root.eslint.config.js new file mode 120000 index 00000000000..35dedbe5a4a --- /dev/null +++ b/packages/angular-persist-query-client/root.eslint.config.js @@ -0,0 +1 @@ +../../eslint.config.js \ No newline at end of file diff --git a/packages/angular-persist-query-client/root.vite.config.js b/packages/angular-persist-query-client/root.vite.config.js new file mode 120000 index 00000000000..1faec0e8745 --- /dev/null +++ b/packages/angular-persist-query-client/root.vite.config.js @@ -0,0 +1 @@ +../../scripts/getViteAliases.js \ No newline at end of file diff --git a/packages/angular-persist-query-client/src/__tests__/utils.ts b/packages/angular-persist-query-client/src/__tests__/utils.ts new file mode 100644 index 00000000000..73fb0ed26fa --- /dev/null +++ b/packages/angular-persist-query-client/src/__tests__/utils.ts @@ -0,0 +1,12 @@ +let queryKeyCount = 0 + +export function queryKey(): Array { + queryKeyCount++ + return [`query_${queryKeyCount}`] +} + +export function sleep(timeout: number): Promise { + return new Promise((resolve, _reject) => { + setTimeout(resolve, timeout) + }) +} diff --git a/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts b/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts new file mode 100644 index 00000000000..7085c753eac --- /dev/null +++ b/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts @@ -0,0 +1,406 @@ +import { describe, expect, test, vi } from 'vitest' +import { + QueryClient, + injectQuery, + provideTanStackQuery, +} from '@tanstack/angular-query-experimental' +import { persistQueryClientSave } from '@tanstack/query-persist-client-core' +import { + Component, + effect, + provideExperimentalZonelessChangeDetection, +} from '@angular/core' +import { render, screen, waitFor } from '@testing-library/angular' +import { withPersistQueryClient } from '../with-persist-query-client' +import { queryKey, sleep } from './utils' +import type { + PersistedClient, + Persister, +} from '@tanstack/query-persist-client-core' + +const createMockPersister = (): Persister => { + let storedState: PersistedClient | undefined + + return { + persistClient(persistClient: PersistedClient) { + storedState = persistClient + }, + async restoreClient() { + await sleep(10) + return storedState + }, + removeClient() { + storedState = undefined + }, + } +} + +const createMockErrorPersister = ( + removeClient: Persister['removeClient'], +): [Error, Persister] => { + const error = new Error('restore failed') + return [ + error, + { + async persistClient() { + // noop + }, + async restoreClient() { + await sleep(10) + throw error + }, + removeClient, + }, + ] +} + +describe('withPersistQueryClient', () => { + test('restores cache from persister', async () => { + const key = queryKey() + const states: Array<{ + status: string + fetchStatus: string + data: string | undefined + }> = [] + + const queryClient = new QueryClient() + await queryClient.prefetchQuery({ + queryKey: key, + queryFn: () => Promise.resolve('hydrated'), + }) + + const persister = createMockPersister() + + await persistQueryClientSave({ queryClient, persister }) + + queryClient.clear() + + @Component({ + template: ` + ++ `, + }) + class Page { + state = injectQuery(() => ({ + queryKey: key, + queryFn: async () => { + await sleep(10) + return 'fetched' + }, + })) + _ = effect(() => { + states.push({ + status: this.state.status(), + fetchStatus: this.state.fetchStatus(), + data: this.state.data(), + }) + }) + } + + render(Page, { + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery( + queryClient, + withPersistQueryClient({ persistOptions: { persister } }), + ), + ], + }) + + await waitFor(() => screen.getByText('fetchStatus: idle')) + await waitFor(() => screen.getByText('hydrated')) + await waitFor(() => screen.getByText('fetched')) + + expect(states).toHaveLength(3) + + expect(states[0]).toMatchObject({ + status: 'pending', + fetchStatus: 'idle', + data: undefined, + }) + + expect(states[1]).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: 'hydrated', + }) + + expect(states[2]).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: 'fetched', + }) + }) + + test.todo( + '(Once injectQueries is functional) verify that injectQueries transitions to an idle state', + ) + + test('should show initialData while restoring', async () => { + const key = queryKey() + const states: Array<{ + status: string + fetchStatus: string + data: string | undefined + }> = [] + + const queryClient = new QueryClient() + await queryClient.prefetchQuery({ + queryKey: key, + queryFn: () => Promise.resolve('hydrated'), + }) + + const persister = createMockPersister() + + await persistQueryClientSave({ queryClient, persister }) + + queryClient.clear() + + @Component({ + template: ` +{{ state.data() }}
+fetchStatus: {{ state.fetchStatus() }}
+++ `, + }) + class Page { + state = injectQuery(() => ({ + queryKey: key, + queryFn: async () => { + await sleep(10) + return 'fetched' + }, + initialData: 'initial', + // make sure that initial data is older than the hydration data + // otherwise initialData would be newer and takes precedence + initialDataUpdatedAt: 1, + })) + _ = effect(() => { + states.push({ + status: this.state.status(), + fetchStatus: this.state.fetchStatus(), + data: this.state.data(), + }) + }) + } + + render(Page, { + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery( + queryClient, + withPersistQueryClient({ persistOptions: { persister } }), + ), + ], + }) + + await waitFor(() => screen.getByText('fetched')) + + expect(states).toHaveLength(3) + + expect(states[0]).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: 'initial', + }) + + expect(states[1]).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: 'hydrated', + }) + + expect(states[2]).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: 'fetched', + }) + }) + + test('should not refetch after restoring when data is fresh', async () => { + const key = queryKey() + const states: Array<{ + status: string + fetchStatus: string + data: string | undefined + }> = [] + + const queryClient = new QueryClient() + await queryClient.prefetchQuery({ + queryKey: key, + queryFn: () => Promise.resolve('hydrated'), + }) + + const persister = createMockPersister() + + await persistQueryClientSave({ queryClient, persister }) + + queryClient.clear() + + let fetched = false + + @Component({ + template: ` +{{ state.data() }}
+fetchStatus: {{ state.fetchStatus() }}
+++ `, + }) + class Page { + state = injectQuery(() => ({ + queryKey: key, + queryFn: async () => { + fetched = true + await sleep(10) + return 'fetched' + }, + staleTime: Infinity, + })) + _ = effect(() => { + states.push({ + status: this.state.status(), + fetchStatus: this.state.fetchStatus(), + data: this.state.data(), + }) + }) + } + + render(Page, { + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery( + queryClient, + withPersistQueryClient({ persistOptions: { persister } }), + ), + ], + }) + + await waitFor(() => screen.getByText('data: null')) + await waitFor(() => screen.getByText('data: hydrated')) + + expect(states).toHaveLength(2) + + expect(fetched).toBe(false) + + expect(states[0]).toMatchObject({ + status: 'pending', + fetchStatus: 'idle', + data: undefined, + }) + + expect(states[1]).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: 'hydrated', + }) + }) + + test('should call onSuccess after successful restoring', async () => { + const key = queryKey() + const queryClient = new QueryClient() + await queryClient.prefetchQuery({ + queryKey: key, + queryFn: () => Promise.resolve('hydrated'), + }) + + const persister = createMockPersister() + await persistQueryClientSave({ queryClient, persister }) + + queryClient.clear() + + @Component({ + template: ` +data: {{ state.data() ?? 'null' }}
+fetchStatus: {{ state.fetchStatus() }}
+++ `, + }) + class Page { + state = injectQuery(() => ({ + queryKey: key, + queryFn: async () => { + await sleep(10) + return 'fetched' + }, + })) + } + + const onSuccess = vi.fn() + + render(Page, { + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery( + queryClient, + withPersistQueryClient({ + persistOptions: { persister }, + onSuccess, + }), + ), + ], + }) + + expect(onSuccess).toHaveBeenCalledTimes(0) + await waitFor(() => screen.getByText('fetched')) + expect(onSuccess).toHaveBeenCalledTimes(1) + }) + + test('should remove cache after non-successful restoring', async () => { + const key = queryKey() + const onErrorMock = vi + .spyOn(console, 'error') + .mockImplementation(() => undefined) + const queryClient = new QueryClient() + const removeClient = vi.fn() + const [error, persister] = createMockErrorPersister(removeClient) + const onSuccess = vi.fn() + const onError = vi.fn() + + @Component({ + template: ` +{{ state.data() }}
+fetchStatus: {{ state.fetchStatus() }}
+++ `, + }) + class Page { + state = injectQuery(() => ({ + queryKey: key, + queryFn: async () => { + await sleep(10) + return 'fetched' + }, + })) + } + + render(Page, { + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery( + queryClient, + withPersistQueryClient({ + persistOptions: { persister }, + onSuccess, + onError, + }), + ), + ], + }) + + await waitFor(() => screen.getByText('fetched')) + expect(removeClient).toHaveBeenCalledTimes(1) + expect(onSuccess).toHaveBeenCalledTimes(0) + expect(onError).toHaveBeenCalledTimes(1) + + expect(onErrorMock).toHaveBeenCalledTimes(1) + expect(onErrorMock).toHaveBeenNthCalledWith(1, error) + onErrorMock.mockRestore() + }) +}) diff --git a/packages/angular-persist-query-client/src/index.ts b/packages/angular-persist-query-client/src/index.ts new file mode 100644 index 00000000000..2f7546d1967 --- /dev/null +++ b/packages/angular-persist-query-client/src/index.ts @@ -0,0 +1,4 @@ +// Re-export core +export * from '@tanstack/query-persist-client-core' + +export * from './with-persist-query-client' diff --git a/packages/angular-persist-query-client/src/test-setup.ts b/packages/angular-persist-query-client/src/test-setup.ts new file mode 100644 index 00000000000..30c962a8e62 --- /dev/null +++ b/packages/angular-persist-query-client/src/test-setup.ts @@ -0,0 +1,10 @@ +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from '@angular/platform-browser-dynamic/testing' +import { getTestBed } from '@angular/core/testing' + +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting(), +) diff --git a/packages/angular-persist-query-client/src/with-persist-query-client.ts b/packages/angular-persist-query-client/src/with-persist-query-client.ts new file mode 100644 index 00000000000..2896cbc7b27 --- /dev/null +++ b/packages/angular-persist-query-client/src/with-persist-query-client.ts @@ -0,0 +1,88 @@ +import { + QueryClient, + provideIsRestoring, + queryFeature, +} from '@tanstack/angular-query-experimental' +import { + DestroyRef, + ENVIRONMENT_INITIALIZER, + PLATFORM_ID, + inject, + signal, +} from '@angular/core' +import { isPlatformBrowser } from '@angular/common' +import { + persistQueryClientRestore, + persistQueryClientSubscribe, +} from '@tanstack/query-persist-client-core' +import type { PersistQueryClientOptions as PersistQueryClientOptionsCore } from '@tanstack/query-persist-client-core' +import type { PersistQueryClientFeature } from '@tanstack/angular-query-experimental' + +type PersistQueryClientOptions = { + persistOptions: Omit{{ state.data() }}
+fetchStatus: {{ state.fetchStatus() }}
++ onSuccess?: () => Promise | unknown + onError?: () => Promise | unknown +} + +/** + * Enables persistence. + * + * **Example** + * + * ```ts + * const localStoragePersister = createSyncStoragePersister({ + * storage: window.localStorage, + * }) + * + * export const appConfig: ApplicationConfig = { + * providers: [ + * provideTanStackQuery( + * new QueryClient(), + * withPersistQueryClient({ + * persistOptions: { + * persister: localStoragePersister, + * }, + * onSuccess: () => console.log('Restoration completed successfully.'), + * }) + * ), + * ], + * }; + * ``` + * @param persistQueryClientOptions - persistence options and optional onSuccess and onError callbacks which get called when the restoration process is complete. + * @returns A set of providers for use with `provideTanStackQuery`. + * @public + */ +export function withPersistQueryClient( + persistQueryClientOptions: PersistQueryClientOptions, +): PersistQueryClientFeature { + const isRestoring = signal(false) + const providers = [ + provideIsRestoring(isRestoring.asReadonly()), + { + provide: ENVIRONMENT_INITIALIZER, + multi: true, + useValue: () => { + if (!isPlatformBrowser(inject(PLATFORM_ID))) return + const destroyRef = inject(DestroyRef) + const queryClient = inject(QueryClient) + + isRestoring.set(true) + const { onSuccess, onError, persistOptions } = persistQueryClientOptions + const options = { queryClient, ...persistOptions } + persistQueryClientRestore(options) + .then(() => { + onSuccess?.() + }) + .catch(() => { + onError?.() + }) + .finally(() => { + isRestoring.set(false) + const cleanup = persistQueryClientSubscribe(options) + destroyRef.onDestroy(cleanup) + }) + }, + }, + ] + return queryFeature('PersistQueryClient', providers) +} diff --git a/packages/angular-persist-query-client/tsconfig.json b/packages/angular-persist-query-client/tsconfig.json new file mode 100644 index 00000000000..1c0f8de7c8e --- /dev/null +++ b/packages/angular-persist-query-client/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist-ts", + "rootDir": ".", + "baseUrl": ".", + "moduleResolution": "Bundler", + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noFallthroughCasesInSwitch": true, + "useDefineForClassFields": false, + "target": "ES2022", + "types": ["vitest/globals"] + }, + "include": ["src", "*.config.js", "*.config.ts", "package.json"], + "references": [ + { "path": "../angular-query-experimental" }, + { "path": "../query-persist-client-core" } + ] +} diff --git a/packages/angular-persist-query-client/tsconfig.prod.json b/packages/angular-persist-query-client/tsconfig.prod.json new file mode 100644 index 00000000000..0f4c92da065 --- /dev/null +++ b/packages/angular-persist-query-client/tsconfig.prod.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "incremental": false, + "composite": false, + "rootDir": "../../" + } +} diff --git a/packages/angular-persist-query-client/tsup.config.js b/packages/angular-persist-query-client/tsup.config.js new file mode 100644 index 00000000000..a1e9d23c1ca --- /dev/null +++ b/packages/angular-persist-query-client/tsup.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'tsup' + +export default defineConfig({ + entry: ['src/index.ts'], + sourcemap: true, + clean: true, + format: ['esm'], + dts: true, + outDir: 'build', + outExtension({ format }) { + return format === 'esm' ? { js: '.mjs' } : { js: '.js' } + }, +}) diff --git a/packages/angular-persist-query-client/vite.config.ts b/packages/angular-persist-query-client/vite.config.ts new file mode 100644 index 00000000000..e822fd87c6d --- /dev/null +++ b/packages/angular-persist-query-client/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vitest/config' +import tsconfigPaths from 'vite-tsconfig-paths' + +import { dynamicAliases } from './root.vite.config' +import packageJson from './package.json' + +export default defineConfig({ + plugins: [tsconfigPaths({ ignoreConfigErrors: true })], + resolve: { + alias: dynamicAliases, + }, + test: { + name: packageJson.name, + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['src/test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + globals: true, + restoreMocks: true, + }, +}) diff --git a/packages/angular-query-experimental/src/create-base-query.ts b/packages/angular-query-experimental/src/create-base-query.ts index 14494c9eb4b..84a87d4b08d 100644 --- a/packages/angular-query-experimental/src/create-base-query.ts +++ b/packages/angular-query-experimental/src/create-base-query.ts @@ -1,5 +1,4 @@ import { - DestroyRef, NgZone, VERSION, computed, @@ -11,6 +10,7 @@ import { import { QueryClient, notifyManager } from '@tanstack/query-core' import { signalProxy } from './signal-proxy' import { shouldThrowError } from './util' +import { injectIsRestoring } from './inject-is-restoring' import type { QueryKey, QueryObserver, @@ -40,8 +40,8 @@ export function createBaseQuery< Observer: typeof QueryObserver, ) { const ngZone = inject(NgZone) - const destroyRef = inject(DestroyRef) const queryClient = inject(QueryClient) + const isRestoring = injectIsRestoring() /** * Signal that has the default options from query client applied @@ -51,7 +51,9 @@ export function createBaseQuery< */ const defaultedOptionsSignal = computed(() => { const defaultedOptions = queryClient.defaultQueryOptions(optionsFn()) - defaultedOptions._optimisticResults = 'optimistic' + defaultedOptions._optimisticResults = isRestoring() + ? 'isRestoring' + : 'optimistic' return defaultedOptions }) @@ -97,34 +99,34 @@ export function createBaseQuery< }, ) - effect(() => { + effect((onCleanup) => { // observer.trackResult is not used as this optimization is not needed for Angular const observer = observerSignal() - - untracked(() => { - const unsubscribe = ngZone.runOutsideAngular(() => - observer.subscribe( - notifyManager.batchCalls((state) => { - ngZone.run(() => { - if ( - state.isError && - !state.isFetching && - // !isRestoring() && // todo: enable when client persistence is implemented - shouldThrowError(observer.options.throwOnError, [ - state.error, - observer.getCurrentQuery(), - ]) - ) { - ngZone.onError.emit(state.error) - throw state.error - } - resultFromSubscriberSignal.set(state) - }) - }), - ), - ) - destroyRef.onDestroy(unsubscribe) - }) + const unsubscribe = isRestoring() + ? () => undefined + : untracked(() => + ngZone.runOutsideAngular(() => + observer.subscribe( + notifyManager.batchCalls((state) => { + ngZone.run(() => { + if ( + state.isError && + !state.isFetching && + shouldThrowError(observer.options.throwOnError, [ + state.error, + observer.getCurrentQuery(), + ]) + ) { + ngZone.onError.emit(state.error) + throw state.error + } + resultFromSubscriberSignal.set(state) + }) + }), + ), + ), + ) + onCleanup(unsubscribe) }) return signalProxy( diff --git a/packages/angular-query-experimental/src/index.ts b/packages/angular-query-experimental/src/index.ts index aa6292d4b57..da68067d33c 100644 --- a/packages/angular-query-experimental/src/index.ts +++ b/packages/angular-query-experimental/src/index.ts @@ -22,6 +22,7 @@ export { infiniteQueryOptions } from './infinite-query-options' export * from './inject-infinite-query' export * from './inject-is-fetching' export * from './inject-is-mutating' +export * from './inject-is-restoring' export * from './inject-mutation' export * from './inject-mutation-state' export * from './inject-queries' diff --git a/packages/angular-query-experimental/src/inject-is-restoring.ts b/packages/angular-query-experimental/src/inject-is-restoring.ts new file mode 100644 index 00000000000..aef8b7a532e --- /dev/null +++ b/packages/angular-query-experimental/src/inject-is-restoring.ts @@ -0,0 +1,50 @@ +import { + InjectionToken, + Injector, + assertInInjectionContext, + computed, + inject, +} from '@angular/core' +import type { Provider, Signal } from '@angular/core' + +const IsRestoring = new InjectionToken >('IsRestoring') + +/** + * The `Injector` in which to create the isRestoring signal. + * + * If this is not provided, the current injection context will be used instead (via `inject`). + */ +interface InjectIsRestoringOptions { + injector?: Injector +} + +/** + * Injects a signal that tracks whether a restore is currently in progress. {@link injectQuery} and friends also check this internally to avoid race conditions between the restore and mounting queries. + * @param options - Options for injectIsRestoring. + * @returns signal with boolean that indicates whether a restore is in progress. + * @public + */ +export function injectIsRestoring( + options?: InjectIsRestoringOptions, +): Signal { + !options?.injector && assertInInjectionContext(injectIsRestoring) + const injector = options?.injector ?? inject(Injector) + return injector.get( + IsRestoring, + computed(() => false), + { optional: true }, + ) +} + +/** + * Used by TanStack Query Angular persist client plugin to provide the signal that tracks the restore state + * @param isRestoring - a readonly signal that returns a boolean + * @returns Provider for the `isRestoring` signal + * @public + */ +export function provideIsRestoring(isRestoring: Signal ): Provider { + return { + provide: IsRestoring, + useValue: isRestoring, + } +} diff --git a/packages/angular-query-experimental/src/inject-queries.ts b/packages/angular-query-experimental/src/inject-queries.ts index ea96688f72b..677e9db222b 100644 --- a/packages/angular-query-experimental/src/inject-queries.ts +++ b/packages/angular-query-experimental/src/inject-queries.ts @@ -12,6 +12,7 @@ import { signal, } from '@angular/core' import { assertInjector } from './util/assert-injector/assert-injector' +import { injectIsRestoring } from './inject-is-restoring' import type { Injector, Signal } from '@angular/core' import type { DefaultError, @@ -217,12 +218,15 @@ export function injectQueries< const destroyRef = inject(DestroyRef) const ngZone = inject(NgZone) const queryClient = inject(QueryClient) + const isRestoring = injectIsRestoring() const defaultedQueries = computed(() => { return queries().map((opts) => { const defaultedOptions = queryClient.defaultQueryOptions(opts) // Make sure the results are already in fetching state before subscribing or updating options - defaultedOptions._optimisticResults = 'optimistic' + defaultedOptions._optimisticResults = isRestoring() + ? 'isRestoring' + : 'optimistic' return defaultedOptions as QueryObserverOptions }) @@ -250,10 +254,14 @@ export function injectQueries< const result = signal(getCombinedResult() as any) - const unsubscribe = ngZone.runOutsideAngular(() => - observer.subscribe(notifyManager.batchCalls(result.set)), - ) - destroyRef.onDestroy(unsubscribe) + effect(() => { + const unsubscribe = isRestoring() + ? () => undefined + : ngZone.runOutsideAngular(() => + observer.subscribe(notifyManager.batchCalls(result.set)), + ) + destroyRef.onDestroy(unsubscribe) + }) return result }) diff --git a/packages/angular-query-experimental/src/providers.ts b/packages/angular-query-experimental/src/providers.ts index 19070be32c2..98ea2e04ed8 100644 --- a/packages/angular-query-experimental/src/providers.ts +++ b/packages/angular-query-experimental/src/providers.ts @@ -140,7 +140,7 @@ export interface QueryFeature { * @param providers - * @returns A Query feature. */ -function queryFeature ( +export function queryFeature ( kind: TFeatureKind, providers: Array , ): QueryFeature { @@ -155,6 +155,13 @@ function queryFeature ( */ export type DeveloperToolsFeature = QueryFeature<'DeveloperTools'> +/** + * A type alias that represents a feature which enables persistence. + * The type is used to describe the return value of the `withPersistQueryClient` function. + * @public + */ +export type PersistQueryClientFeature = QueryFeature<'PersistQueryClient'> + /** * Options for configuring the TanStack Query devtools. * @public @@ -342,8 +349,8 @@ export function withDevtools( * @public * @see {@link provideTanStackQuery} */ -export type QueryFeatures = DeveloperToolsFeature // Union type of features but just one now +export type QueryFeatures = DeveloperToolsFeature | PersistQueryClientFeature -export const queryFeatures = ['DeveloperTools'] as const +export const queryFeatures = ['DeveloperTools', 'PersistQueryClient'] as const export type QueryFeatureKind = (typeof queryFeatures)[number] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b68c154480f..c961b7bd5e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,10 +159,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -202,10 +202,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -232,6 +232,55 @@ importers: specifier: 5.8.3 version: 5.8.3 + examples/angular/basic-persister: + dependencies: + '@angular/common': + specifier: ^19.2.4 + version: 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/compiler': + specifier: ^19.2.4 + version: 19.2.4 + '@angular/core': + specifier: ^19.2.4 + version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': + specifier: ^19.2.4 + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/platform-browser-dynamic': + specifier: ^19.2.4 + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + '@tanstack/angular-query-experimental': + specifier: workspace:* + version: link:../../../packages/angular-query-experimental + '@tanstack/angular-query-persist-client': + specifier: ^5.62.7 + version: link:../../../packages/angular-persist-query-client + '@tanstack/query-sync-storage-persister': + specifier: workspace:* + version: link:../../../packages/query-sync-storage-persister + rxjs: + specifier: ^7.8.2 + version: 7.8.2 + tslib: + specifier: ^2.8.1 + version: 2.8.1 + zone.js: + specifier: ^0.15.0 + version: 0.15.0 + devDependencies: + '@angular/build': + specifier: ^19.2.5 + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + '@angular/cli': + specifier: ^19.2.5 + version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + '@angular/compiler-cli': + specifier: ^19.2.4 + version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) + typescript: + specifier: 5.8.3 + version: 5.8.3 + examples/angular/devtools-panel: dependencies: '@angular/common': @@ -245,13 +294,13 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@angular/router': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@tanstack/angular-query-devtools-experimental': specifier: workspace:* version: link:../../../packages/angular-query-devtools-experimental @@ -294,10 +343,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -337,13 +386,13 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -383,10 +432,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -426,13 +475,13 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@angular/router': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -472,13 +521,13 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@angular/router': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -518,13 +567,13 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -564,10 +613,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../../packages/angular-query-experimental @@ -1978,10 +2027,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../../packages/angular-query-experimental @@ -2220,6 +2269,43 @@ importers: specifier: ^2.2.8 version: 2.2.8(typescript@5.8.3) + packages/angular-persist-query-client: + dependencies: + '@angular/common': + specifier: '>=16.0.0' + version: 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@tanstack/query-persist-client-core': + specifier: workspace:* + version: link:../query-persist-client-core + devDependencies: + '@angular/compiler': + specifier: ^19.2.4 + version: 19.2.4 + '@angular/core': + specifier: ^19.2.4 + version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': + specifier: ^19.2.4 + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/platform-browser-dynamic': + specifier: ^19.2.4 + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + '@tanstack/angular-query-experimental': + specifier: workspace:* + version: link:../angular-query-experimental + '@testing-library/angular': + specifier: ^17.3.2 + version: 17.3.7(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2))(@testing-library/dom@10.4.0) + '@testing-library/dom': + specifier: ^10.4.0 + version: 10.4.0 + eslint-plugin-jsdoc: + specifier: ^50.5.0 + version: 50.5.0(eslint@9.15.0(jiti@2.4.2)) + npm-run-all2: + specifier: ^5.0.0 + version: 5.0.2 + packages/angular-query-devtools-experimental: dependencies: '@angular/common': @@ -2234,7 +2320,7 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) '@tanstack/angular-query-experimental': specifier: workspace:* version: link:../angular-query-experimental @@ -2265,10 +2351,10 @@ importers: version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) '@angular/platform-browser': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: ^19.2.4 - version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) + version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))) eslint-plugin-jsdoc: specifier: ^50.5.0 version: 50.5.0(eslint@9.15.0(jiti@2.4.2)) @@ -2838,6 +2924,12 @@ packages: resolution: {integrity: sha512-gfWnbwDOuKyRZK0biVyiNIhV6kmI1VmHg1LLbJm3QK6jDL0JgXD0NudgL8ILl5Ksd1sJOwQAuzTLM5iPfB3hDA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular/animations@19.2.4': + resolution: {integrity: sha512-aoVgPGaB/M9OLGt9rMMYd8V9VNzVEFQHKpyuEl4FDBoeuIaFJcXFTfwY3+L5Ew6wcIErKH67rRYJsKv8r5Ou8w==} + engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + peerDependencies: + '@angular/core': 19.2.4 + '@angular/build@19.2.5': resolution: {integrity: sha512-WtgdBHxFVMtbLzEYf1dYJqtld282aXxEbefsRi3RZWnLya8qO33bKMxpcd0V2iLIuIc1v/sUXPIzbWLO10mvTg==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -6620,6 +6712,16 @@ packages: resolution: {integrity: sha512-l4RonnJM8gOLeyzThSEd/ZTDhrMGQGm9ZdXtmoLPF17L6Z6neJkNmfYSvVXPPUpL9aQOVncAR0OWDgZgsxIjFw==} engines: {node: '>=12'} + '@testing-library/angular@17.3.7': + resolution: {integrity: sha512-99Wf/06CCyBP3rmIu+WacUTGZMDKTQR12phe1lUMrknwxHLFUf5jn230L/mW4XIZ+ThDJ/4D6OzhVskbOYDqig==} + peerDependencies: + '@angular/animations': '>= 17.0.0' + '@angular/common': '>= 17.0.0' + '@angular/core': '>= 17.0.0' + '@angular/platform-browser': '>= 17.0.0' + '@angular/router': '>= 17.0.0' + '@testing-library/dom': ^10.0.0 + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -16024,6 +16126,11 @@ snapshots: transitivePeerDependencies: - chokidar + '@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))': + dependencies: + '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) + tslib: 2.8.1 + '@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)': dependencies: '@ampproject/remapping': 2.3.0 @@ -16178,33 +16285,35 @@ snapshots: tslib: 2.8.1 zone.js: 0.15.0 - '@angular/forms@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser-dynamic@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))': + '@angular/platform-browser-dynamic@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))': dependencies: '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': 19.2.4 '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) tslib: 2.8.1 - '@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 + optionalDependencies: + '@angular/animations': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 @@ -20405,6 +20514,16 @@ snapshots: - tsx - yaml + '@testing-library/angular@17.3.7(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2))(@testing-library/dom@10.4.0)': + dependencies: + '@angular/animations': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/router': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@testing-library/dom': 10.4.0 + tslib: 2.8.1 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 diff --git a/scripts/publish.js b/scripts/publish.js index 9bfa1e5a35c..953763b5697 100644 --- a/scripts/publish.js +++ b/scripts/publish.js @@ -92,6 +92,11 @@ await publish({ name: '@tanstack/angular-query-experimental', packageDir: 'packages/angular-query-experimental', }, + // publish when angular-query is stable + // { + // name: '@tanstack/angular-query-persist-client', + // packageDir: 'packages/angular-persist-query-client', + // }, ], branchConfigs: { main: { From b76b0ef8b61b5448f946a8ff1144614c110db318 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Sun, 13 Apr 2025 17:48:44 +0000 Subject: [PATCH 2/3] release: v5.74.0 --- examples/angular/auto-refetching/package.json | 2 +- examples/angular/basic-persister/package.json | 4 ++-- examples/angular/basic/package.json | 2 +- examples/angular/devtools-panel/package.json | 4 ++-- .../angular/infinite-query-with-max-pages/package.json | 2 +- examples/angular/optimistic-updates/package.json | 2 +- examples/angular/pagination/package.json | 2 +- .../angular/query-options-from-a-service/package.json | 2 +- examples/angular/router/package.json | 2 +- examples/angular/rxjs/package.json | 2 +- examples/angular/simple/package.json | 2 +- examples/react/algolia/package.json | 4 ++-- examples/react/auto-refetching/package.json | 4 ++-- examples/react/basic-graphql-request/package.json | 4 ++-- examples/react/basic/package.json | 8 ++++---- examples/react/chat/package.json | 4 ++-- examples/react/default-query-function/package.json | 4 ++-- examples/react/devtools-panel/package.json | 4 ++-- examples/react/eslint-legacy/package.json | 8 ++++---- examples/react/infinite-query-with-max-pages/package.json | 4 ++-- examples/react/load-more-infinite-scroll/package.json | 4 ++-- examples/react/nextjs-app-prefetching/package.json | 4 ++-- examples/react/nextjs-suspense-streaming/package.json | 6 +++--- examples/react/nextjs/package.json | 4 ++-- examples/react/offline/package.json | 8 ++++---- examples/react/optimistic-updates-cache/package.json | 4 ++-- examples/react/optimistic-updates-ui/package.json | 4 ++-- examples/react/pagination/package.json | 4 ++-- examples/react/playground/package.json | 4 ++-- examples/react/prefetching/package.json | 4 ++-- examples/react/react-native/package.json | 4 ++-- examples/react/react-router/package.json | 4 ++-- examples/react/rick-morty/package.json | 4 ++-- examples/react/shadow-dom/package.json | 4 ++-- examples/react/simple/package.json | 4 ++-- examples/react/star-wars/package.json | 4 ++-- examples/react/suspense/package.json | 4 ++-- examples/solid/astro/package.json | 4 ++-- examples/solid/basic-graphql-request/package.json | 4 ++-- examples/solid/basic/package.json | 4 ++-- examples/solid/default-query-function/package.json | 4 ++-- examples/solid/simple/package.json | 4 ++-- examples/solid/solid-start-streaming/package.json | 4 ++-- examples/svelte/auto-refetching/package.json | 4 ++-- examples/svelte/basic/package.json | 8 ++++---- examples/svelte/load-more-infinite-scroll/package.json | 4 ++-- examples/svelte/optimistic-updates/package.json | 4 ++-- examples/svelte/playground/package.json | 4 ++-- examples/svelte/simple/package.json | 4 ++-- examples/svelte/ssr/package.json | 4 ++-- examples/svelte/star-wars/package.json | 4 ++-- examples/vue/2.6-basic/package.json | 2 +- examples/vue/2.7-basic/package.json | 2 +- examples/vue/basic/package.json | 4 ++-- examples/vue/dependent-queries/package.json | 2 +- examples/vue/nuxt3/package.json | 2 +- examples/vue/persister/package.json | 8 ++++---- examples/vue/simple/package.json | 4 ++-- packages/angular-query-devtools-experimental/package.json | 2 +- packages/angular-query-experimental/package.json | 2 +- packages/query-async-storage-persister/package.json | 2 +- packages/query-broadcast-client-experimental/package.json | 2 +- packages/query-core/package.json | 2 +- packages/query-persist-client-core/package.json | 2 +- packages/query-sync-storage-persister/package.json | 2 +- packages/react-query-devtools/package.json | 2 +- packages/react-query-next-experimental/package.json | 2 +- packages/react-query-persist-client/package.json | 2 +- packages/react-query/package.json | 2 +- packages/solid-query-devtools/package.json | 2 +- packages/solid-query-persist-client/package.json | 2 +- packages/solid-query/package.json | 2 +- packages/svelte-query-devtools/package.json | 2 +- packages/svelte-query-persist-client/package.json | 2 +- packages/svelte-query/package.json | 2 +- packages/vue-query-devtools/package.json | 2 +- packages/vue-query/package.json | 2 +- 77 files changed, 133 insertions(+), 133 deletions(-) diff --git a/examples/angular/auto-refetching/package.json b/examples/angular/auto-refetching/package.json index 0640dcb4dac..2d1c0811396 100644 --- a/examples/angular/auto-refetching/package.json +++ b/examples/angular/auto-refetching/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/basic-persister/package.json b/examples/angular/basic-persister/package.json index 3b04dbd562b..a8056751980 100644 --- a/examples/angular/basic-persister/package.json +++ b/examples/angular/basic-persister/package.json @@ -14,9 +14,9 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "@tanstack/angular-query-persist-client": "^5.62.7", - "@tanstack/query-sync-storage-persister": "^5.73.3", + "@tanstack/query-sync-storage-persister": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "^0.15.0" diff --git a/examples/angular/basic/package.json b/examples/angular/basic/package.json index 3b49b3f26c2..616a81c04cd 100644 --- a/examples/angular/basic/package.json +++ b/examples/angular/basic/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/devtools-panel/package.json b/examples/angular/devtools-panel/package.json index 1b04c0248af..8fc2d132e31 100644 --- a/examples/angular/devtools-panel/package.json +++ b/examples/angular/devtools-panel/package.json @@ -15,8 +15,8 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-devtools-experimental": "^5.73.3", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-devtools-experimental": "^5.74.0", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/infinite-query-with-max-pages/package.json b/examples/angular/infinite-query-with-max-pages/package.json index f1fa1f4e62c..7b8a1a5c9c7 100644 --- a/examples/angular/infinite-query-with-max-pages/package.json +++ b/examples/angular/infinite-query-with-max-pages/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/optimistic-updates/package.json b/examples/angular/optimistic-updates/package.json index 9b9428a9f5e..d76c51d288e 100644 --- a/examples/angular/optimistic-updates/package.json +++ b/examples/angular/optimistic-updates/package.json @@ -15,7 +15,7 @@ "@angular/forms": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/pagination/package.json b/examples/angular/pagination/package.json index e4eb191caad..4dd3aee8273 100644 --- a/examples/angular/pagination/package.json +++ b/examples/angular/pagination/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/query-options-from-a-service/package.json b/examples/angular/query-options-from-a-service/package.json index db05db09a04..dbe1b922f9f 100644 --- a/examples/angular/query-options-from-a-service/package.json +++ b/examples/angular/query-options-from-a-service/package.json @@ -15,7 +15,7 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/router/package.json b/examples/angular/router/package.json index 6013ebab04d..120e5517c03 100644 --- a/examples/angular/router/package.json +++ b/examples/angular/router/package.json @@ -15,7 +15,7 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/rxjs/package.json b/examples/angular/rxjs/package.json index 307b3dd95e0..bee0e6ebbdd 100644 --- a/examples/angular/rxjs/package.json +++ b/examples/angular/rxjs/package.json @@ -15,7 +15,7 @@ "@angular/forms": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/simple/package.json b/examples/angular/simple/package.json index e0e633a35d4..6a6d8d42168 100644 --- a/examples/angular/simple/package.json +++ b/examples/angular/simple/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.73.3", + "@tanstack/angular-query-experimental": "^5.74.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/react/algolia/package.json b/examples/react/algolia/package.json index f26f48788b4..915a5f424c7 100644 --- a/examples/react/algolia/package.json +++ b/examples/react/algolia/package.json @@ -9,8 +9,8 @@ }, "dependencies": { "@algolia/client-search": "5.2.1", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/auto-refetching/package.json b/examples/react/auto-refetching/package.json index 0932b68afcd..84465d4f8b0 100644 --- a/examples/react/auto-refetching/package.json +++ b/examples/react/auto-refetching/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/basic-graphql-request/package.json b/examples/react/basic-graphql-request/package.json index 18bff357403..df9068c3384 100644 --- a/examples/react/basic-graphql-request/package.json +++ b/examples/react/basic-graphql-request/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "graphql": "^16.9.0", "graphql-request": "^7.1.2", "react": "^19.0.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index 1407eca850b..5fc71aa9dfd 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -9,10 +9,10 @@ "test:eslint": "eslint ./src" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.73.3", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", - "@tanstack/react-query-persist-client": "^5.73.3", + "@tanstack/query-sync-storage-persister": "^5.74.0", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", + "@tanstack/react-query-persist-client": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/chat/package.json b/examples/react/chat/package.json index 8792493ad2a..24900e0067b 100644 --- a/examples/react/chat/package.json +++ b/examples/react/chat/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/default-query-function/package.json b/examples/react/default-query-function/package.json index 7a622da2ce8..3d71d3b6182 100644 --- a/examples/react/default-query-function/package.json +++ b/examples/react/default-query-function/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/devtools-panel/package.json b/examples/react/devtools-panel/package.json index 5d8b3f236a7..4b05d050482 100644 --- a/examples/react/devtools-panel/package.json +++ b/examples/react/devtools-panel/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/eslint-legacy/package.json b/examples/react/eslint-legacy/package.json index f2660d7c7e8..59bcb219797 100644 --- a/examples/react/eslint-legacy/package.json +++ b/examples/react/eslint-legacy/package.json @@ -9,10 +9,10 @@ "test:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint ./src/**/*.tsx" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.73.3", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", - "@tanstack/react-query-persist-client": "^5.73.3", + "@tanstack/query-sync-storage-persister": "^5.74.0", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", + "@tanstack/react-query-persist-client": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/infinite-query-with-max-pages/package.json b/examples/react/infinite-query-with-max-pages/package.json index e9594827fcf..e262759ffce 100644 --- a/examples/react/infinite-query-with-max-pages/package.json +++ b/examples/react/infinite-query-with-max-pages/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/load-more-infinite-scroll/package.json b/examples/react/load-more-infinite-scroll/package.json index 0e8987b1e69..3b53adefe77 100644 --- a/examples/react/load-more-infinite-scroll/package.json +++ b/examples/react/load-more-infinite-scroll/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/examples/react/nextjs-app-prefetching/package.json b/examples/react/nextjs-app-prefetching/package.json index 040aebe64f4..8f6e12bef25 100644 --- a/examples/react/nextjs-app-prefetching/package.json +++ b/examples/react/nextjs-app-prefetching/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^19.0.0", "react-dom": "^19.0.0" diff --git a/examples/react/nextjs-suspense-streaming/package.json b/examples/react/nextjs-suspense-streaming/package.json index 7fba8fffa86..49371749a38 100644 --- a/examples/react/nextjs-suspense-streaming/package.json +++ b/examples/react/nextjs-suspense-streaming/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", - "@tanstack/react-query-next-experimental": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", + "@tanstack/react-query-next-experimental": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/nextjs/package.json b/examples/react/nextjs/package.json index 1372308f8f4..188f74b1255 100644 --- a/examples/react/nextjs/package.json +++ b/examples/react/nextjs/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/offline/package.json b/examples/react/offline/package.json index 7ced307c2e0..0294d998976 100644 --- a/examples/react/offline/package.json +++ b/examples/react/offline/package.json @@ -8,11 +8,11 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.73.3", + "@tanstack/query-sync-storage-persister": "^5.74.0", "@tanstack/react-location": "^3.7.4", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", - "@tanstack/react-query-persist-client": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", + "@tanstack/react-query-persist-client": "^5.74.0", "msw": "^2.6.6", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/examples/react/optimistic-updates-cache/package.json b/examples/react/optimistic-updates-cache/package.json index b77f49530a4..30144032816 100755 --- a/examples/react/optimistic-updates-cache/package.json +++ b/examples/react/optimistic-updates-cache/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/optimistic-updates-ui/package.json b/examples/react/optimistic-updates-ui/package.json index 261a80d992c..df63a98f5cd 100755 --- a/examples/react/optimistic-updates-ui/package.json +++ b/examples/react/optimistic-updates-ui/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/pagination/package.json b/examples/react/pagination/package.json index 132048c7213..0e544cc91cc 100644 --- a/examples/react/pagination/package.json +++ b/examples/react/pagination/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/playground/package.json b/examples/react/playground/package.json index 0c08a9705da..e216f374fe8 100644 --- a/examples/react/playground/package.json +++ b/examples/react/playground/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/prefetching/package.json b/examples/react/prefetching/package.json index 0fbc517327e..d4d8f2bcc6c 100644 --- a/examples/react/prefetching/package.json +++ b/examples/react/prefetching/package.json @@ -8,8 +8,8 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "next": "^15.1.2", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/examples/react/react-native/package.json b/examples/react/react-native/package.json index 3e19c6939b5..8f674c27c61 100644 --- a/examples/react/react-native/package.json +++ b/examples/react/react-native/package.json @@ -14,8 +14,8 @@ "@react-native-community/netinfo": "^11.4.1", "@react-navigation/native": "^6.1.18", "@react-navigation/stack": "^6.4.1", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "expo": "^52.0.11", "expo-constants": "^17.0.3", "expo-status-bar": "^2.0.0", diff --git a/examples/react/react-router/package.json b/examples/react/react-router/package.json index 5cf5d6ad42f..b842dfc6848 100644 --- a/examples/react/react-router/package.json +++ b/examples/react/react-router/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "localforage": "^1.10.0", "match-sorter": "^6.3.4", "react": "^19.0.0", diff --git a/examples/react/rick-morty/package.json b/examples/react/rick-morty/package.json index 1af75114ad9..0f60c0444bf 100644 --- a/examples/react/rick-morty/package.json +++ b/examples/react/rick-morty/package.json @@ -12,8 +12,8 @@ "@emotion/styled": "^11.13.5", "@mui/material": "^6.1.8", "@mui/styles": "^6.1.8", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router": "^6.25.1", diff --git a/examples/react/shadow-dom/package.json b/examples/react/shadow-dom/package.json index 7651d2ae54e..327bb294936 100644 --- a/examples/react/shadow-dom/package.json +++ b/examples/react/shadow-dom/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/simple/package.json b/examples/react/simple/package.json index cad16b2b6ad..6e3b3f943ea 100644 --- a/examples/react/simple/package.json +++ b/examples/react/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/star-wars/package.json b/examples/react/star-wars/package.json index bc7ec30a211..ad1b0e4338e 100644 --- a/examples/react/star-wars/package.json +++ b/examples/react/star-wars/package.json @@ -12,8 +12,8 @@ "@emotion/styled": "^11.13.5", "@mui/material": "^6.1.8", "@mui/styles": "^6.1.8", - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router": "^6.25.1", diff --git a/examples/react/suspense/package.json b/examples/react/suspense/package.json index 3e80e3a4058..9ab78b7eb96 100644 --- a/examples/react/suspense/package.json +++ b/examples/react/suspense/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.73.3", - "@tanstack/react-query-devtools": "^5.73.3", + "@tanstack/react-query": "^5.74.0", + "@tanstack/react-query-devtools": "^5.74.0", "font-awesome": "^4.7.0", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/examples/solid/astro/package.json b/examples/solid/astro/package.json index bd56d3bc56f..7ff993c95b9 100644 --- a/examples/solid/astro/package.json +++ b/examples/solid/astro/package.json @@ -15,8 +15,8 @@ "@astrojs/solid-js": "^5.0.7", "@astrojs/tailwind": "^6.0.2", "@astrojs/vercel": "^8.1.3", - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "astro": "^5.5.6", "solid-js": "^1.9.5", "tailwindcss": "^3.4.7", diff --git a/examples/solid/basic-graphql-request/package.json b/examples/solid/basic-graphql-request/package.json index ceda64bfb53..c0b3b3c4b7c 100644 --- a/examples/solid/basic-graphql-request/package.json +++ b/examples/solid/basic-graphql-request/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "graphql": "^16.9.0", "graphql-request": "^7.1.2", "solid-js": "^1.9.5" diff --git a/examples/solid/basic/package.json b/examples/solid/basic/package.json index 73540187df0..3e37492caad 100644 --- a/examples/solid/basic/package.json +++ b/examples/solid/basic/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "solid-js": "^1.9.5" }, "devDependencies": { diff --git a/examples/solid/default-query-function/package.json b/examples/solid/default-query-function/package.json index e81575cf051..a80c40554ac 100644 --- a/examples/solid/default-query-function/package.json +++ b/examples/solid/default-query-function/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "solid-js": "^1.9.5" }, "devDependencies": { diff --git a/examples/solid/simple/package.json b/examples/solid/simple/package.json index 2ccd94df789..c5d1261b5c1 100644 --- a/examples/solid/simple/package.json +++ b/examples/solid/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "solid-js": "^1.9.5" }, "devDependencies": { diff --git a/examples/solid/solid-start-streaming/package.json b/examples/solid/solid-start-streaming/package.json index 20df3b72e2f..9fe734d6a69 100644 --- a/examples/solid/solid-start-streaming/package.json +++ b/examples/solid/solid-start-streaming/package.json @@ -12,8 +12,8 @@ "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.3", "@solidjs/start": "^1.1.3", - "@tanstack/solid-query": "^5.73.3", - "@tanstack/solid-query-devtools": "^5.73.3", + "@tanstack/solid-query": "^5.74.0", + "@tanstack/solid-query-devtools": "^5.74.0", "solid-js": "^1.9.5", "vinxi": "^0.5.3" }, diff --git a/examples/svelte/auto-refetching/package.json b/examples/svelte/auto-refetching/package.json index 06c0e7e2c42..08fc878dbf1 100644 --- a/examples/svelte/auto-refetching/package.json +++ b/examples/svelte/auto-refetching/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/basic/package.json b/examples/svelte/basic/package.json index 4b47f6cdc3c..6fd947a51bb 100644 --- a/examples/svelte/basic/package.json +++ b/examples/svelte/basic/package.json @@ -8,10 +8,10 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.73.3", - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3", - "@tanstack/svelte-query-persist-client": "^5.73.3" + "@tanstack/query-sync-storage-persister": "^5.74.0", + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0", + "@tanstack/svelte-query-persist-client": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/load-more-infinite-scroll/package.json b/examples/svelte/load-more-infinite-scroll/package.json index a2aaf3c2283..be30368d8a8 100644 --- a/examples/svelte/load-more-infinite-scroll/package.json +++ b/examples/svelte/load-more-infinite-scroll/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/optimistic-updates/package.json b/examples/svelte/optimistic-updates/package.json index ccf1990958a..b75be262dc6 100644 --- a/examples/svelte/optimistic-updates/package.json +++ b/examples/svelte/optimistic-updates/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/playground/package.json b/examples/svelte/playground/package.json index 369d327d2cf..8631774bfcc 100644 --- a/examples/svelte/playground/package.json +++ b/examples/svelte/playground/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/simple/package.json b/examples/svelte/simple/package.json index fe7e381af7f..ce2549bca21 100644 --- a/examples/svelte/simple/package.json +++ b/examples/svelte/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.3", diff --git a/examples/svelte/ssr/package.json b/examples/svelte/ssr/package.json index 3b5cd38e5fc..bbf77e57544 100644 --- a/examples/svelte/ssr/package.json +++ b/examples/svelte/ssr/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/star-wars/package.json b/examples/svelte/star-wars/package.json index bdc3db2ab7c..4c10b85f5a7 100644 --- a/examples/svelte/star-wars/package.json +++ b/examples/svelte/star-wars/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.73.3", - "@tanstack/svelte-query-devtools": "^5.73.3" + "@tanstack/svelte-query": "^5.74.0", + "@tanstack/svelte-query-devtools": "^5.74.0" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/vue/2.6-basic/package.json b/examples/vue/2.6-basic/package.json index 81a29b9650b..139104a5aaf 100644 --- a/examples/vue/2.6-basic/package.json +++ b/examples/vue/2.6-basic/package.json @@ -8,7 +8,7 @@ "_preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3", + "@tanstack/vue-query": "^5.74.0", "@vue/composition-api": "1.7.2", "vue": "2.6.14", "vue-template-compiler": "2.6.14" diff --git a/examples/vue/2.7-basic/package.json b/examples/vue/2.7-basic/package.json index c1ea9db69ca..6fcbf730375 100644 --- a/examples/vue/2.7-basic/package.json +++ b/examples/vue/2.7-basic/package.json @@ -8,7 +8,7 @@ "_serve": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3", + "@tanstack/vue-query": "^5.74.0", "vue": "2.7.16", "vue-template-compiler": "2.7.16" }, diff --git a/examples/vue/basic/package.json b/examples/vue/basic/package.json index 997a14715e4..b9086c2f951 100644 --- a/examples/vue/basic/package.json +++ b/examples/vue/basic/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3", - "@tanstack/vue-query-devtools": "^5.73.3", + "@tanstack/vue-query": "^5.74.0", + "@tanstack/vue-query-devtools": "^5.74.0", "vue": "^3.4.27" }, "devDependencies": { diff --git a/examples/vue/dependent-queries/package.json b/examples/vue/dependent-queries/package.json index bcf6b378014..42094aa6366 100644 --- a/examples/vue/dependent-queries/package.json +++ b/examples/vue/dependent-queries/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3", + "@tanstack/vue-query": "^5.74.0", "vue": "^3.4.27" }, "devDependencies": { diff --git a/examples/vue/nuxt3/package.json b/examples/vue/nuxt3/package.json index 05f832d5934..0a039600c80 100644 --- a/examples/vue/nuxt3/package.json +++ b/examples/vue/nuxt3/package.json @@ -7,7 +7,7 @@ "_start": "node .output/server/index.mjs" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3" + "@tanstack/vue-query": "^5.74.0" }, "devDependencies": { "nuxt": "^3.12.4" diff --git a/examples/vue/persister/package.json b/examples/vue/persister/package.json index 45c86f3259c..af4abcdfd3b 100644 --- a/examples/vue/persister/package.json +++ b/examples/vue/persister/package.json @@ -8,10 +8,10 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-core": "^5.73.3", - "@tanstack/query-persist-client-core": "^5.73.3", - "@tanstack/query-sync-storage-persister": "^5.73.3", - "@tanstack/vue-query": "^5.73.3", + "@tanstack/query-core": "^5.74.0", + "@tanstack/query-persist-client-core": "^5.74.0", + "@tanstack/query-sync-storage-persister": "^5.74.0", + "@tanstack/vue-query": "^5.74.0", "idb-keyval": "^6.2.1", "vue": "^3.4.27" }, diff --git a/examples/vue/simple/package.json b/examples/vue/simple/package.json index 6fed2504717..c5396f7b044 100644 --- a/examples/vue/simple/package.json +++ b/examples/vue/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.73.3", - "@tanstack/vue-query-devtools": "^5.73.3", + "@tanstack/vue-query": "^5.74.0", + "@tanstack/vue-query-devtools": "^5.74.0", "vue": "^3.4.27" }, "devDependencies": { diff --git a/packages/angular-query-devtools-experimental/package.json b/packages/angular-query-devtools-experimental/package.json index 2e282be8283..fc4b443c44a 100644 --- a/packages/angular-query-devtools-experimental/package.json +++ b/packages/angular-query-devtools-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-query-devtools-experimental", - "version": "5.73.3", + "version": "5.74.0", "description": "Developer tools to interact with and visualize the TanStack/angular-query cache", "author": "Arnoud de Vries", "license": "MIT", diff --git a/packages/angular-query-experimental/package.json b/packages/angular-query-experimental/package.json index 616354f92e3..bc0b77147fb 100644 --- a/packages/angular-query-experimental/package.json +++ b/packages/angular-query-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-query-experimental", - "version": "5.73.3", + "version": "5.74.0", "description": "Signals for managing, caching and syncing asynchronous and remote data in Angular", "author": "Arnoud de Vries", "license": "MIT", diff --git a/packages/query-async-storage-persister/package.json b/packages/query-async-storage-persister/package.json index c38d7fede28..1a96d9af93d 100644 --- a/packages/query-async-storage-persister/package.json +++ b/packages/query-async-storage-persister/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-async-storage-persister", - "version": "5.73.3", + "version": "5.74.0", "description": "A persister for asynchronous storages, to be used with TanStack/Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-broadcast-client-experimental/package.json b/packages/query-broadcast-client-experimental/package.json index a61d4cfb6ef..05ea8dfb509 100644 --- a/packages/query-broadcast-client-experimental/package.json +++ b/packages/query-broadcast-client-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-broadcast-client-experimental", - "version": "5.73.3", + "version": "5.74.0", "description": "An experimental plugin to for broadcasting the state of your queryClient between browser tabs/windows", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-core/package.json b/packages/query-core/package.json index 640d02c978b..dd90f6069de 100644 --- a/packages/query-core/package.json +++ b/packages/query-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-core", - "version": "5.73.3", + "version": "5.74.0", "description": "The framework agnostic core that powers TanStack Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-persist-client-core/package.json b/packages/query-persist-client-core/package.json index e507d5642bf..696fe287312 100644 --- a/packages/query-persist-client-core/package.json +++ b/packages/query-persist-client-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-persist-client-core", - "version": "5.73.3", + "version": "5.74.0", "description": "Set of utilities for interacting with persisters, which can save your queryClient for later use", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-sync-storage-persister/package.json b/packages/query-sync-storage-persister/package.json index b4ee109b4fe..643d53bdf59 100644 --- a/packages/query-sync-storage-persister/package.json +++ b/packages/query-sync-storage-persister/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-sync-storage-persister", - "version": "5.73.3", + "version": "5.74.0", "description": "A persister for synchronous storages, to be used with TanStack/Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query-devtools/package.json b/packages/react-query-devtools/package.json index 4856d2cd01c..f312a9f667a 100644 --- a/packages/react-query-devtools/package.json +++ b/packages/react-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-devtools", - "version": "5.73.3", + "version": "5.74.0", "description": "Developer tools to interact with and visualize the TanStack/react-query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query-next-experimental/package.json b/packages/react-query-next-experimental/package.json index d0483c32a6f..d2608efe555 100644 --- a/packages/react-query-next-experimental/package.json +++ b/packages/react-query-next-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-next-experimental", - "version": "5.73.3", + "version": "5.74.0", "description": "Hydration utils for React Query in the NextJs app directory", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query-persist-client/package.json b/packages/react-query-persist-client/package.json index 4105542ace9..447827781ef 100644 --- a/packages/react-query-persist-client/package.json +++ b/packages/react-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-persist-client", - "version": "5.73.3", + "version": "5.74.0", "description": "React bindings to work with persisters in TanStack/react-query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query/package.json b/packages/react-query/package.json index 047af612651..4cd341d5d36 100644 --- a/packages/react-query/package.json +++ b/packages/react-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query", - "version": "5.73.3", + "version": "5.74.0", "description": "Hooks for managing, caching and syncing asynchronous and remote data in React", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query-devtools/package.json b/packages/solid-query-devtools/package.json index 7b81e7a3dc4..ceef8580672 100644 --- a/packages/solid-query-devtools/package.json +++ b/packages/solid-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query-devtools", - "version": "5.73.3", + "version": "5.74.0", "description": "Developer tools to interact with and visualize the TanStack/solid-query Query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query-persist-client/package.json b/packages/solid-query-persist-client/package.json index cf54aa33a11..d6b003c9e20 100644 --- a/packages/solid-query-persist-client/package.json +++ b/packages/solid-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query-persist-client", - "version": "5.73.3", + "version": "5.74.0", "description": "Solid.js bindings to work with persisters in TanStack/solid-query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query/package.json b/packages/solid-query/package.json index 1e05152aa7a..f1fde52827d 100644 --- a/packages/solid-query/package.json +++ b/packages/solid-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query", - "version": "5.73.3", + "version": "5.74.0", "description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/svelte-query-devtools/package.json b/packages/svelte-query-devtools/package.json index d5a22023dc2..626c6a0f174 100644 --- a/packages/svelte-query-devtools/package.json +++ b/packages/svelte-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query-devtools", - "version": "5.73.3", + "version": "5.74.0", "description": "Developer tools to interact with and visualize the TanStack/svelte-query cache", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/svelte-query-persist-client/package.json b/packages/svelte-query-persist-client/package.json index 149ff9068a1..fab8781e7ae 100644 --- a/packages/svelte-query-persist-client/package.json +++ b/packages/svelte-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query-persist-client", - "version": "5.73.3", + "version": "5.74.0", "description": "Svelte bindings to work with persisters in TanStack/svelte-query", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/svelte-query/package.json b/packages/svelte-query/package.json index d24c4033fc4..702634608f9 100644 --- a/packages/svelte-query/package.json +++ b/packages/svelte-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query", - "version": "5.73.3", + "version": "5.74.0", "description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/vue-query-devtools/package.json b/packages/vue-query-devtools/package.json index 3945630ac6b..7ec8c421789 100644 --- a/packages/vue-query-devtools/package.json +++ b/packages/vue-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-query-devtools", - "version": "5.73.3", + "version": "5.74.0", "description": "Developer tools to interact with and visualize the TanStack/vue-query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/vue-query/package.json b/packages/vue-query/package.json index e26c2470656..45a43c70fa7 100644 --- a/packages/vue-query/package.json +++ b/packages/vue-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-query", - "version": "5.73.3", + "version": "5.74.0", "description": "Hooks for managing, caching and syncing asynchronous and remote data in Vue", "author": "Damian Osipiuk", "license": "MIT", From 572e2a5b446234340a83558805060e50016422ab Mon Sep 17 00:00:00 2001 From: Arnoud <6420061+arnoud-dv@users.noreply.github.com> Date: Sun, 13 Apr 2025 20:21:31 +0200 Subject: [PATCH 3/3] docs(angular-query): fix links (#9010) --- docs/framework/angular/guides/caching.md | 4 ++-- docs/framework/angular/guides/invalidations-from-mutations.md | 2 +- docs/framework/angular/guides/mutation-options.md | 2 +- docs/framework/angular/overview.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/framework/angular/guides/caching.md b/docs/framework/angular/guides/caching.md index 369df58c3a3..1fec944fcfb 100644 --- a/docs/framework/angular/guides/caching.md +++ b/docs/framework/angular/guides/caching.md @@ -3,7 +3,7 @@ id: caching title: Caching Examples --- -> Please thoroughly read the [Important Defaults](../important-defaults) before reading this guide +> Please thoroughly read the [Important Defaults](./important-defaults.md) before reading this guide ## Basic Example @@ -23,7 +23,7 @@ Let's assume we are using the default `gcTime` of **5 minutes** and the default - A second instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos })` initializes elsewhere. - Since the cache already has data for the `['todos']` key from the first query, that data is immediately returned from the cache. - The new instance triggers a new network request using its query function. - - Note that regardless of whether both `fetchTodos` query functions are identical or not, both queries' [`status`](../../reference/injectQuery) are updated (including `isFetching`, `isPending`, and other related values) because they have the same query key. + - Note that regardless of whether both `fetchTodos` query functions are identical or not, both queries' [`status`](../../reference/injectQuery.md) are updated (including `isFetching`, `isPending`, and other related values) because they have the same query key. - When the request completes successfully, the cache's data under the `['todos']` key is updated with the new data, and both instances are updated with the new data. - Both instances of the `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos })` query are destroyed and no longer in use. - Since there are no more active instances of this query, a garbage collection timeout is set using `gcTime` to delete and garbage collect the query (defaults to **5 minutes**). diff --git a/docs/framework/angular/guides/invalidations-from-mutations.md b/docs/framework/angular/guides/invalidations-from-mutations.md index 8c05262d5e5..402463dedc5 100644 --- a/docs/framework/angular/guides/invalidations-from-mutations.md +++ b/docs/framework/angular/guides/invalidations-from-mutations.md @@ -38,4 +38,4 @@ export class TodosComponent { [//]: # 'Example2' -You can wire up your invalidations to happen using any of the callbacks available in the [`injectMutation` function](../mutations) +You can wire up your invalidations to happen using any of the callbacks available in the [`injectMutation` function](../mutations.md) diff --git a/docs/framework/angular/guides/mutation-options.md b/docs/framework/angular/guides/mutation-options.md index 8fd372a0ba3..469a5b7c465 100644 --- a/docs/framework/angular/guides/mutation-options.md +++ b/docs/framework/angular/guides/mutation-options.md @@ -5,7 +5,7 @@ title: Mutation Options One of the best ways to share mutation options between multiple places, is to use the `mutationOptions` helper. At runtime, this helper just returns whatever you pass into it, -but it has a lot of advantages when using it [with TypeScript](../../typescript#typing-query-options). +but it has a lot of advantages when using it [with TypeScript](../../typescript#typing-query-options.md). You can define all possible options for a mutation in one place, and you'll also get type inference and type safety for all of them. diff --git a/docs/framework/angular/overview.md b/docs/framework/angular/overview.md index 09997f76d5f..e8bd94a4e75 100644 --- a/docs/framework/angular/overview.md +++ b/docs/framework/angular/overview.md @@ -110,4 +110,4 @@ interface Response { ## You talked me into it, so what now? -- Learn TanStack Query at your own pace with our amazingly thorough [Walkthrough Guide](../installation) and [API Reference](../reference/functions/injectquery) +- Learn TanStack Query at your own pace with our amazingly thorough [Walkthrough Guide](../installation.md) and [API Reference](../reference/functions/injectquery.md)