diff --git a/.changeset/green-ducks-admire.md b/.changeset/green-ducks-admire.md
new file mode 100644
index 000000000..aedbc36d6
--- /dev/null
+++ b/.changeset/green-ducks-admire.md
@@ -0,0 +1,18 @@
+---
+'@powersync/tanstack-react-query': patch
+'@powersync/op-sqlite': patch
+'@powersync/adapter-sql-js': patch
+'@powersync/drizzle-driver': patch
+'@powersync/kysely-driver': patch
+'@powersync/react-native': patch
+'@powersync/diagnostics-app': patch
+'@powersync/attachments': patch
+'@powersync/capacitor': patch
+'@powersync/common': patch
+'@powersync/react': patch
+'@powersync/node': patch
+'@powersync/vue': patch
+'@powersync/web': patch
+---
+
+Update dependencies.
diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml
index 686da3637..45c601bf0 100644
--- a/.github/workflows/audit.yaml
+++ b/.github/workflows/audit.yaml
@@ -12,11 +12,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
- uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- name: Install pnpm
+ uses: actions/checkout@v5
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
- version: 9
- run_install: false
+ node-version-file: '.nvmrc'
+ cache: pnpm
+
- name: Audit for vulnerabilities
- run: npx audit-ci@^7 --config ./audit-ci.jsonc
+ run: pnpx audit-ci@^7 --config ./audit-ci.jsonc
diff --git a/.github/workflows/build-docs.yaml b/.github/workflows/build-docs.yaml
index 64d40e25d..337861c05 100644
--- a/.github/workflows/build-docs.yaml
+++ b/.github/workflows/build-docs.yaml
@@ -12,27 +12,14 @@ jobs:
GH_URL: http://example.test
steps:
- name: Checkout
- uses: actions/checkout@v4
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ uses: actions/checkout@v5
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build Packages
diff --git a/.github/workflows/build-packages.yaml b/.github/workflows/build-packages.yaml
index 7d3964618..4c1476ef7 100644
--- a/.github/workflows/build-packages.yaml
+++ b/.github/workflows/build-packages.yaml
@@ -10,33 +10,17 @@ jobs:
name: Build Packages
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
-
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
-
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
-
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml
index 137a555e7..faf2d3252 100644
--- a/.github/workflows/deploy-docs.yaml
+++ b/.github/workflows/deploy-docs.yaml
@@ -27,27 +27,14 @@ jobs:
GH_PROJECT_NAME: ${{vars.GH_PROJECT_NAME}}
steps:
- name: Checkout
- uses: actions/checkout@v4
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ uses: actions/checkout@v5
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build Packages
diff --git a/.github/workflows/dev-packages.yaml b/.github/workflows/dev-packages.yaml
index d8d34e9e0..3695dd410 100644
--- a/.github/workflows/dev-packages.yaml
+++ b/.github/workflows/dev-packages.yaml
@@ -9,31 +9,16 @@ jobs:
name: Publish Dev Packages
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
- - name: Add NPM auth
- run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" >> ~/.npmrc
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Build
diff --git a/.github/workflows/diagnostics-image-build.yaml b/.github/workflows/diagnostics-image-build.yaml
index f50a0fe9a..d2f01ddf5 100644
--- a/.github/workflows/diagnostics-image-build.yaml
+++ b/.github/workflows/diagnostics-image-build.yaml
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
diff --git a/.github/workflows/diagnostics-image-release.yaml b/.github/workflows/diagnostics-image-release.yaml
index fc6ccba4b..080c479c3 100644
--- a/.github/workflows/diagnostics-image-release.yaml
+++ b/.github/workflows/diagnostics-image-release.yaml
@@ -17,7 +17,7 @@ jobs:
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 813d1d011..a8b0a934a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -18,24 +18,13 @@ jobs:
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- # Pnpm 9.4 introduces this https://github.com/pnpm/pnpm/pull/7633
- # which causes workspace:^1.2.0 to be converted to 1.2.0^1.2.0
- version: 9.3
- run_install: false
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- - uses: actions/cache@v3
- name: Setup pnpm cache
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ node-version-file: '.nvmrc'
+ cache: pnpm
- name: Install dependencies
run: pnpm install
- name: Create Release Pull Request or Publish to npm
diff --git a/.github/workflows/test-isolated.yaml b/.github/workflows/test-isolated.yaml
index 8581dfbbc..19fa36938 100644
--- a/.github/workflows/test-isolated.yaml
+++ b/.github/workflows/test-isolated.yaml
@@ -10,16 +10,19 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
- node-version-file: ".nvmrc"
+ node-version-file: '.nvmrc'
+ cache: pnpm
- - name: Set up JDK 17
+ - name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
@@ -28,27 +31,6 @@ jobs:
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- # Pnpm 9.4 introduces this https://github.com/pnpm/pnpm/pull/7633
- # which causes workspace:^1.2.0 to be converted to 1.2.0^1.2.0
- version: 9.3
- run_install: false
-
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
-
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
-
- name: Install
run: pnpm install
diff --git a/.github/workflows/test-simulators.yaml b/.github/workflows/test-simulators.yaml
index d219cba72..e99861d64 100644
--- a/.github/workflows/test-simulators.yaml
+++ b/.github/workflows/test-simulators.yaml
@@ -10,7 +10,7 @@ jobs:
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Check for changes
@@ -32,7 +32,7 @@ jobs:
env:
AVD_NAME: ubuntu-avd-x86_64-31
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
@@ -61,29 +61,13 @@ jobs:
distribution: 'adopt'
cache: 'gradle'
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
-
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
-
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
-
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
@@ -138,7 +122,7 @@ jobs:
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
@@ -165,29 +149,13 @@ jobs:
restore-keys: |
xcode-derived-${{ runner.os }}-
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
-
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
-
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
-
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 1d8892809..7eadbe38f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,33 +10,17 @@ jobs:
runs-on: ubuntu-xl
timeout-minutes: 30
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
with:
persist-credentials: false
- - name: Setup NodeJS
- uses: actions/setup-node@v4
+ - name: Enable Corepack
+ run: corepack enable
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'
-
- - uses: pnpm/action-setup@v2
- name: Install pnpm
- with:
- version: 9
- run_install: false
-
- - name: Get pnpm store directory
- shell: bash
- run: |
- echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
-
- - uses: actions/cache@v3
- name: Setup pnpm cache
- with:
- path: ${{ env.STORE_PATH }}
- key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
- restore-keys: |
- ${{ runner.os }}-pnpm-store-
+ cache: pnpm
- name: Install dependencies
run: pnpm install
diff --git a/.nvmrc b/.nvmrc
index 805b5a4e0..c519bf5ba 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v20.9.0
+v24.11.0
diff --git a/demos/angular-supabase-todolist/package.json b/demos/angular-supabase-todolist/package.json
index 075eb38ac..16103a3d1 100644
--- a/demos/angular-supabase-todolist/package.json
+++ b/demos/angular-supabase-todolist/package.json
@@ -14,29 +14,29 @@
},
"private": true,
"dependencies": {
- "@angular/animations": "^19.2.4",
- "@angular/common": "^19.2.4",
- "@angular/compiler": "^19.2.4",
- "@angular/core": "^19.2.4",
- "@angular/forms": "^19.2.4",
- "@angular/platform-browser": "^19.2.4",
- "@angular/platform-browser-dynamic": "^19.2.4",
- "@angular/router": "^19.2.4",
- "@angular/service-worker": "^19.2.4",
- "@journeyapps/wa-sqlite": "^1.3.2",
+ "@angular/animations": "catalog:",
+ "@angular/common": "catalog:",
+ "@angular/compiler": "catalog:",
+ "@angular/core": "catalog:",
+ "@angular/forms": "catalog:",
+ "@angular/platform-browser": "catalog:",
+ "@angular/platform-browser-dynamic": "catalog:",
+ "@angular/router": "catalog:",
+ "@angular/service-worker": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
"@powersync/web": "workspace:*",
- "@supabase/supabase-js": "^2.44.4",
- "rxjs": "~7.8.1",
- "tslib": "^2.6.3",
- "zone.js": "~0.15.0"
+ "@supabase/supabase-js": "catalog:",
+ "rxjs": "catalog:",
+ "tslib": "catalog:",
+ "zone.js": "catalog:"
},
"devDependencies": {
- "@angular-builders/custom-webpack": "^19.0.0",
- "@angular-devkit/build-angular": "^19.2.5",
- "@angular/cli": "^19.2.5",
- "@angular/compiler-cli": "^19.2.4",
- "dotenv": "^16.4.5",
- "http-server": "^14.1.1",
- "typescript": "~5.5.3"
+ "@angular-builders/custom-webpack": "catalog:",
+ "@angular-devkit/build-angular": "catalog:",
+ "@angular/cli": "catalog:",
+ "@angular/compiler-cli": "catalog:",
+ "dotenv": "catalog:",
+ "http-server": "catalog:",
+ "typescript": "catalog:"
}
}
diff --git a/demos/django-react-native-todolist/package.json b/demos/django-react-native-todolist/package.json
index 59323a45c..28e4e36f7 100644
--- a/demos/django-react-native-todolist/package.json
+++ b/demos/django-react-native-todolist/package.json
@@ -8,50 +8,48 @@
"clean": "watchman watch-del-all && rm -rf .expo"
},
"dependencies": {
- "@azure/core-asynciterator-polyfill": "^1.0.2",
- "@expo/metro-runtime": "^4.0.1",
- "@expo/vector-icons": "^14.0.0",
- "@journeyapps/react-native-quick-sqlite": "^2.4.9",
+ "@azure/core-asynciterator-polyfill": "catalog:",
+ "@expo/metro-runtime": "catalog:",
+ "@expo/vector-icons": "catalog:",
+ "@journeyapps/react-native-quick-sqlite": "catalog:",
"@powersync/common": "workspace:*",
"@powersync/react": "workspace:*",
"@powersync/react-native": "workspace:*",
- "@react-native-community/async-storage": "^1.12.1",
- "@react-native-community/masked-view": "^0.1.11",
- "@react-navigation/drawer": "^7.1.1",
- "@react-navigation/native": "^7.0.14",
- "@supabase/supabase-js": "^2.42.4",
- "expo": "52.0.46",
- "expo-build-properties": "~0.13.2",
- "expo-constants": "~17.0.8",
- "expo-linking": "~7.0.5",
- "expo-modules-autolinking": "^2.0.8",
- "expo-router": "4.0.21",
- "expo-splash-screen": "~0.29.22",
- "expo-status-bar": "~2.0.1",
- "lodash": "^4.17.21",
- "react": "18.3.1",
- "react-native": "0.76.9",
- "react-native-elements": "^3.4.3",
- "react-native-encrypted-storage": "^4.0.3",
- "react-native-gesture-handler": "~2.20.2",
- "react-native-prompt-android": "^1.1.0",
- "react-native-reanimated": "~3.16.7",
- "react-native-safe-area-context": "4.12.0",
- "react-native-safe-area-view": "^1.1.1",
- "react-native-screens": "~4.4.0",
- "react-native-table-component": "^1.2.2",
- "react-native-vector-icons": "^10.0.0",
- "react-navigation-stack": "^2.10.4",
- "typed-async-storage": "^3.1.2"
+ "@react-native-async-storage/async-storage": "catalog:",
+ "@react-native-masked-view/masked-view": "catalog:",
+ "@react-navigation/drawer": "catalog:",
+ "@react-navigation/native": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "expo": "catalog:",
+ "expo-build-properties": "catalog:",
+ "expo-constants": "catalog:",
+ "expo-linking": "catalog:",
+ "expo-modules-autolinking": "catalog:",
+ "expo-router": "catalog:",
+ "expo-splash-screen": "catalog:",
+ "expo-status-bar": "catalog:",
+ "lodash": "catalog:",
+ "react": "catalog:",
+ "react-native": "catalog:",
+ "react-native-elements": "catalog:",
+ "react-native-encrypted-storage": "catalog:",
+ "react-native-gesture-handler": "catalog:",
+ "react-native-prompt-android": "catalog:",
+ "react-native-reanimated": "catalog:",
+ "react-native-safe-area-context": "catalog:",
+ "react-native-screens": "catalog:",
+ "react-native-table-component": "catalog:",
+ "@react-navigation/stack": "catalog:",
+ "typed-async-storage": "catalog:"
},
"devDependencies": {
- "@babel/plugin-transform-async-generator-functions": "^7.24.3",
- "@babel/preset-env": "^7.24.4",
- "@types/lodash": "^4.17.0",
- "@types/react": "~18.3.18",
- "@types/react-dom": "18.3.6",
- "@types/react-native-table-component": "^1.2.8",
- "typescript": "^5.3.3"
+ "@babel/plugin-transform-async-generator-functions": "catalog:",
+ "@babel/preset-env": "catalog:",
+ "@types/lodash": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "@types/react-native-table-component": "catalog:",
+ "typescript": "catalog:"
},
"private": true
}
diff --git a/demos/example-capacitor/package.json b/demos/example-capacitor/package.json
index 9ba20f697..7dee899f0 100644
--- a/demos/example-capacitor/package.json
+++ b/demos/example-capacitor/package.json
@@ -20,31 +20,31 @@
"preview": "vite preview"
},
"dependencies": {
- "@capacitor-community/sqlite": "^7.0.2",
- "@capacitor/android": "^7.4.3",
- "@capacitor/core": "latest",
- "@capacitor/ios": "^7.4.3",
- "@capacitor/splash-screen": "latest",
+ "@capacitor-community/sqlite": "catalog:",
+ "@capacitor/android": "catalog:",
+ "@capacitor/core": "catalog:",
+ "@capacitor/ios": "catalog:",
+ "@capacitor/splash-screen": "catalog:",
"@powersync/capacitor": "workspace:*",
- "@journeyapps/wa-sqlite": "^1.3.2",
+ "@journeyapps/wa-sqlite": "catalog:",
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.23.0"
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-router-dom": "catalog:"
},
"devDependencies": {
- "@capacitor/cli": "^7.4.3",
- "@swc/core": "~1.6.0",
- "@mui/material": "^5.15.12",
- "@emotion/react": "11.11.4",
- "@emotion/styled": "11.11.5",
- "@types/node": "^20.12.12",
- "@types/react": "^18.3.2",
- "@types/react-dom": "^18.3.0",
- "vite": "^5.2.11",
- "vite-plugin-require": "^1.2.14",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@capacitor/cli": "catalog:",
+ "@swc/core": "catalog:",
+ "@mui/material": "catalog:",
+ "@emotion/react": "catalog:",
+ "@emotion/styled": "catalog:",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-require": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/example-electron-node/package.json b/demos/example-electron-node/package.json
index f394e3b55..e7d3bee45 100644
--- a/demos/example-electron-node/package.json
+++ b/demos/example-electron-node/package.json
@@ -17,31 +17,31 @@
"publish": "electron-forge publish"
},
"devDependencies": {
- "@electron-forge/cli": "^7.7.0",
- "@electron-forge/maker-deb": "^7.7.0",
- "@electron-forge/maker-squirrel": "^7.7.0",
- "@electron-forge/maker-zip": "^7.7.0",
- "@electron-forge/plugin-auto-unpack-natives": "^7.7.0",
- "@electron-forge/plugin-webpack": "^7.7.0",
- "@types/better-sqlite3": "^7.6.13",
- "@vercel/webpack-asset-relocator-loader": "1.7.3",
- "copy-webpack-plugin": "^13.0.0",
- "css-loader": "^6.11.0",
- "dotenv": "^16.4.7",
- "electron": "37.0.0",
- "electron-rebuild": "^3.2.9",
- "fork-ts-checker-webpack-plugin": "^9.0.2",
- "node-loader": "^2.1.0",
- "style-loader": "^3.3.4",
- "ts-loader": "^9.5.2",
- "ts-node": "^10.9.2",
- "tsx": "^4.19.3",
- "typescript": "^5.8.2",
- "webpack": "^5.90.1"
+ "@electron-forge/cli": "catalog:",
+ "@electron-forge/maker-deb": "catalog:",
+ "@electron-forge/maker-squirrel": "catalog:",
+ "@electron-forge/maker-zip": "catalog:",
+ "@electron-forge/plugin-auto-unpack-natives": "catalog:",
+ "@electron-forge/plugin-webpack": "catalog:",
+ "@types/better-sqlite3": "catalog:",
+ "@vercel/webpack-asset-relocator-loader": "catalog:",
+ "copy-webpack-plugin": "catalog:",
+ "css-loader": "catalog:",
+ "dotenv": "catalog:",
+ "electron": "catalog:",
+ "@electron/rebuild": "catalog:",
+ "fork-ts-checker-webpack-plugin": "catalog:",
+ "node-loader": "catalog:",
+ "style-loader": "catalog:",
+ "ts-loader": "catalog:",
+ "ts-node": "catalog:",
+ "tsx": "catalog:",
+ "typescript": "catalog:",
+ "webpack": "catalog:"
},
"dependencies": {
"@powersync/node": "workspace:*",
- "better-sqlite3": "^12.2.0",
- "electron-squirrel-startup": "^1.0.1"
+ "better-sqlite3": "catalog:",
+ "electron-squirrel-startup": "catalog:"
}
}
diff --git a/demos/example-electron/package.json b/demos/example-electron/package.json
index 4b9f6b397..1e2509eb6 100644
--- a/demos/example-electron/package.json
+++ b/demos/example-electron/package.json
@@ -19,44 +19,44 @@
},
"license": "MIT",
"dependencies": {
- "@emotion/react": "^11.13.0",
- "@emotion/styled": "^11.13.0",
- "@journeyapps/wa-sqlite": "^1.3.2",
- "@mui/icons-material": "^5.15.16",
- "@mui/material": "^5.15.16",
- "@mui/x-data-grid": "^6.19.11",
- "express": "^4.19.2",
+ "@emotion/react": "catalog:",
+ "@emotion/styled": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
+ "@mui/icons-material": "catalog:",
+ "@mui/material": "catalog:",
+ "@mui/x-data-grid": "catalog:",
+ "express": "catalog:",
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "electron-squirrel-startup": "^1.0.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.23.0"
+ "electron-squirrel-startup": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-router-dom": "catalog:"
},
"devDependencies": {
- "@electron-forge/cli": "^7.4.0",
- "@electron-forge/maker-deb": "^7.4.0",
- "@electron-forge/maker-rpm": "^7.4.0",
- "@electron-forge/maker-squirrel": "^7.4.0",
- "@electron-forge/maker-zip": "^7.4.0",
- "@electron-forge/plugin-auto-unpack-natives": "^7.4.0",
- "@electron-forge/plugin-fuses": "^7.4.0",
- "@electron-forge/plugin-vite": "^7.4.0",
- "@electron/fuses": "^1.8.0",
- "@swc/core": "~1.6.0",
- "@types/express": "^4.17.21",
- "@types/node": "^20.12.8",
- "@types/react": "^18.3.1",
- "@types/react-dom": "^18.3.0",
- "@vitejs/plugin-react": "^4.2.1",
- "autoprefixer": "^10.4.19",
- "babel-loader": "^9.1.3",
- "electron": "30.0.2",
- "ts-node": "^10.9.2",
- "typescript": "~4.5.5",
- "vite": "^5.2.11",
- "vite-plugin-require": "^1.1.14",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@electron-forge/cli": "catalog:",
+ "@electron-forge/maker-deb": "catalog:",
+ "@electron-forge/maker-rpm": "catalog:",
+ "@electron-forge/maker-squirrel": "catalog:",
+ "@electron-forge/maker-zip": "catalog:",
+ "@electron-forge/plugin-auto-unpack-natives": "catalog:",
+ "@electron-forge/plugin-fuses": "catalog:",
+ "@electron-forge/plugin-vite": "catalog:",
+ "@electron/fuses": "catalog:",
+ "@swc/core": "catalog:",
+ "@types/express": "catalog:",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "@vitejs/plugin-react": "catalog:",
+ "autoprefixer": "catalog:",
+ "babel-loader": "catalog:",
+ "electron": "catalog:",
+ "ts-node": "catalog:",
+ "typescript": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-require": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/example-nextjs/package.json b/demos/example-nextjs/package.json
index 9cdf7a9b1..019b8e7ef 100644
--- a/demos/example-nextjs/package.json
+++ b/demos/example-nextjs/package.json
@@ -11,34 +11,34 @@
"test:build": "pnpm build"
},
"dependencies": {
- "@emotion/react": "^11.11.4",
- "@emotion/styled": "^11.11.5",
- "@fontsource/roboto": "^5.0.13",
- "@journeyapps/wa-sqlite": "^1.3.2",
- "@lexical/react": "^0.15.0",
- "@mui/icons-material": "^5.15.18",
- "@mui/material": "^5.15.18",
+ "@emotion/react": "catalog:",
+ "@emotion/styled": "catalog:",
+ "@fontsource/roboto": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
+ "@lexical/react": "catalog:",
+ "@mui/icons-material": "catalog:",
+ "@mui/material": "catalog:",
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "lato-font": "^3.0.0",
- "lexical": "^0.15.0",
- "next": "14.2.3",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "lato-font": "catalog:",
+ "lexical": "catalog:",
+ "next": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:"
},
"devDependencies": {
- "@types/node": "^20.12.12",
- "@types/react": "^18.3.2",
- "@types/react-dom": "^18.3.0",
- "autoprefixer": "^10.4.19",
- "babel-loader": "^9.1.3",
- "css-loader": "^6.11.0",
- "eslint": "^8.57.0",
- "eslint-config-next": "14.0.0",
- "postcss": "^8.4.35",
- "sass": "^1.77.2",
- "sass-loader": "^13.3.3",
- "style-loader": "^3.3.4",
- "tailwindcss": "^3.4.3"
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "autoprefixer": "catalog:",
+ "babel-loader": "catalog:",
+ "css-loader": "catalog:",
+ "eslint": "catalog:",
+ "eslint-config-next": "catalog:",
+ "postcss": "catalog:",
+ "sass": "catalog:",
+ "sass-loader": "catalog:",
+ "style-loader": "catalog:",
+ "tailwindcss": "catalog:"
}
}
diff --git a/demos/example-node/package.json b/demos/example-node/package.json
index f7bfa4f34..6645bd014 100644
--- a/demos/example-node/package.json
+++ b/demos/example-node/package.json
@@ -11,14 +11,14 @@
},
"dependencies": {
"@powersync/node": "workspace:*",
- "better-sqlite3": "^12.2.0",
- "better-sqlite3-multiple-ciphers": "^12.2.0",
- "dotenv": "^16.4.7",
- "undici": "^7.11.0"
+ "better-sqlite3": "catalog:",
+ "better-sqlite3-multiple-ciphers": "catalog:",
+ "dotenv": "catalog:",
+ "undici": "catalog:"
},
"devDependencies": {
- "@types/better-sqlite3": "^7.6.13",
- "ts-node": "^10.9.2",
- "typescript": "^5.8.2"
+ "@types/better-sqlite3": "catalog:",
+ "ts-node": "catalog:",
+ "typescript": "catalog:"
}
}
diff --git a/demos/example-vite-encryption/package.json b/demos/example-vite-encryption/package.json
index 34b93d69e..15e8f26de 100644
--- a/demos/example-vite-encryption/package.json
+++ b/demos/example-vite-encryption/package.json
@@ -14,9 +14,9 @@
"@powersync/web": "workspace:*"
},
"devDependencies": {
- "@swc/core": "~1.6.0",
- "vite": "^5.0.12",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@swc/core": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/example-vite/package.json b/demos/example-vite/package.json
index 9a3afcf33..ee0160da5 100644
--- a/demos/example-vite/package.json
+++ b/demos/example-vite/package.json
@@ -14,9 +14,9 @@
"@powersync/web": "workspace:*"
},
"devDependencies": {
- "@swc/core": "~1.6.0",
- "vite": "^5.0.12",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@swc/core": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/example-webpack/package.json b/demos/example-webpack/package.json
index 1d65cb6ee..d92ac968c 100644
--- a/demos/example-webpack/package.json
+++ b/demos/example-webpack/package.json
@@ -12,10 +12,10 @@
"@powersync/web": "workspace:*"
},
"devDependencies": {
- "@types/webpack": "^5.28.5",
- "html-webpack-plugin": "^5.6.0",
- "serve": "^14.2.1",
- "webpack": "^5.90.1",
- "webpack-cli": "^5.1.4"
+ "@types/webpack": "catalog:",
+ "html-webpack-plugin": "catalog:",
+ "serve": "catalog:",
+ "webpack": "catalog:",
+ "webpack-cli": "catalog:"
}
}
diff --git a/demos/react-multi-client/package.json b/demos/react-multi-client/package.json
index 1d7f1735b..758dfc996 100644
--- a/demos/react-multi-client/package.json
+++ b/demos/react-multi-client/package.json
@@ -10,32 +10,31 @@
"test:build": "pnpm build"
},
"dependencies": {
- "@journeyapps/wa-sqlite": "^1.3.2",
+ "@journeyapps/wa-sqlite": "catalog:",
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "@supabase/supabase-js": "^2.43.1",
- "@vitejs/plugin-react": "^4.2.1",
- "@webflow/webflow-cli": "^1.6.9",
- "async-mutex": "^0.5.0",
- "autoprefixer": "10.4.14",
- "lodash": "^4.17.21",
- "postcss": "8.4.27",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "@supabase/supabase-js": "catalog:",
+ "@vitejs/plugin-react": "catalog:",
+ "@webflow/webflow-cli": "catalog:",
+ "async-mutex": "catalog:",
+ "autoprefixer": "catalog:",
+ "lodash": "catalog:",
+ "postcss": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:"
},
"devDependencies": {
- "@swc/core": "~1.6.0",
- "@types/cors": "~2.8.17",
- "@types/lodash": "^4.14.202",
- "@types/node": "^20.10.0",
- "@types/react": "^18.2.38",
- "@types/react-dom": "^18.2.17",
- "prettier": "^3.1.0",
- "supabase": "^1.165.0",
- "typescript": "^5.3.2",
- "vite": "^5.1.5",
- "vite-plugin-pwa": "^0.19.2",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@swc/core": "catalog:",
+ "@types/lodash": "catalog:",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "prettier": "catalog:",
+ "supabase": "catalog:",
+ "typescript": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-pwa": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/react-native-barebones-opsqlite/package.json b/demos/react-native-barebones-opsqlite/package.json
index 4aa90cc35..2b6ab6285 100644
--- a/demos/react-native-barebones-opsqlite/package.json
+++ b/demos/react-native-barebones-opsqlite/package.json
@@ -9,29 +9,29 @@
"start": "react-native start"
},
"dependencies": {
- "@azure/core-asynciterator-polyfill": "^1.0.2",
- "@op-engineering/op-sqlite": "^14.0.2",
+ "@azure/core-asynciterator-polyfill": "catalog:",
+ "@op-engineering/op-sqlite": "catalog:",
"@powersync/op-sqlite": "workspace:*",
"@powersync/common": "workspace:*",
"@powersync/react-native": "workspace:*",
"@powersync/react": "workspace:*",
- "react": "18.3.1",
- "react-native": "0.77.0"
+ "react": "catalog:",
+ "react-native": "catalog:"
},
"devDependencies": {
- "@babel/core": "^7.26.7",
- "@babel/plugin-transform-async-generator-functions": "^7.26.8",
- "@babel/preset-env": "^7.26.7",
- "@babel/runtime": "^7.26.7",
- "@react-native-community/cli": "15.1.3",
- "@react-native-community/cli-platform-android": "15.1.3",
- "@react-native-community/cli-platform-ios": "15.1.3",
- "@react-native/babel-preset": "0.77.0",
- "@react-native/eslint-config": "0.77.0",
- "@react-native/metro-config": "0.77.0",
- "@react-native/typescript-config": "0.77.0",
- "@types/react": "^18.3.18",
- "typescript": "^5.3.3"
+ "@babel/core": "catalog:",
+ "@babel/plugin-transform-async-generator-functions": "catalog:",
+ "@babel/preset-env": "catalog:",
+ "@babel/runtime": "catalog:",
+ "@react-native-community/cli": "catalog:",
+ "@react-native-community/cli-platform-android": "catalog:",
+ "@react-native-community/cli-platform-ios": "catalog:",
+ "@react-native/babel-preset": "catalog:",
+ "@react-native/eslint-config": "catalog:",
+ "@react-native/metro-config": "catalog:",
+ "@react-native/typescript-config": "catalog:",
+ "@types/react": "catalog:",
+ "typescript": "catalog:"
},
"engines": {
"node": ">=18"
diff --git a/demos/react-native-supabase-group-chat/package.json b/demos/react-native-supabase-group-chat/package.json
index f9d3ef76a..a4cfbe3fb 100644
--- a/demos/react-native-supabase-group-chat/package.json
+++ b/demos/react-native-supabase-group-chat/package.json
@@ -19,52 +19,52 @@
"lint": "eslint src"
},
"dependencies": {
- "@azure/core-asynciterator-polyfill": "^1.0.2",
- "@expo/metro-runtime": "^4.0.1",
- "@faker-js/faker": "8.3.1",
- "@journeyapps/react-native-quick-sqlite": "^2.4.9",
+ "@azure/core-asynciterator-polyfill": "catalog:",
+ "@expo/metro-runtime": "catalog:",
+ "@faker-js/faker": "catalog:",
+ "@journeyapps/react-native-quick-sqlite": "catalog:",
"@powersync/common": "workspace:*",
"@powersync/react": "workspace:*",
"@powersync/react-native": "workspace:*",
- "@react-native-async-storage/async-storage": "1.23.1",
- "@shopify/flash-list": "1.7.3",
- "@supabase/supabase-js": "2.39.0",
- "@tamagui/animations-react-native": "1.79.6",
- "@tamagui/babel-plugin": "1.79.6",
- "@tamagui/config": "1.79.6",
- "@tamagui/font-inter": "1.79.6",
- "@tamagui/lucide-icons": "1.79.6",
- "@tamagui/theme-base": "1.79.6",
- "date-fns": "^2.30.0",
- "expo": "52.0.46",
- "expo-build-properties": "~0.13.2",
- "expo-crypto": "~14.0.2",
- "expo-dev-client": "~5.0.20",
- "expo-linking": "~7.0.5",
- "expo-router": "4.0.21",
- "expo-splash-screen": "~0.29.22",
- "expo-status-bar": "~2.0.1",
- "react": "18.3.1",
- "react-dom": "18.3.1",
- "react-native": "0.76.9",
- "react-native-gesture-handler": "~2.20.2",
- "react-native-pager-view": "6.5.1",
- "react-native-reanimated": "~3.16.7",
- "react-native-safe-area-context": "4.12.0",
- "react-native-screens": "~4.4.0",
- "react-native-svg": "15.8.0",
- "react-native-web": "0.19.13",
- "tamagui": "1.79.6"
+ "@react-native-async-storage/async-storage": "catalog:",
+ "@shopify/flash-list": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "@tamagui/animations-react-native": "catalog:",
+ "@tamagui/babel-plugin": "catalog:",
+ "@tamagui/config": "catalog:",
+ "@tamagui/font-inter": "catalog:",
+ "@tamagui/lucide-icons": "catalog:",
+ "@tamagui/theme-base": "catalog:",
+ "date-fns": "catalog:",
+ "expo": "catalog:",
+ "expo-build-properties": "catalog:",
+ "expo-crypto": "catalog:",
+ "expo-dev-client": "catalog:",
+ "expo-linking": "catalog:",
+ "expo-router": "catalog:",
+ "expo-splash-screen": "catalog:",
+ "expo-status-bar": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-native": "catalog:",
+ "react-native-gesture-handler": "catalog:",
+ "react-native-pager-view": "catalog:",
+ "react-native-reanimated": "catalog:",
+ "react-native-safe-area-context": "catalog:",
+ "react-native-screens": "catalog:",
+ "react-native-svg": "catalog:",
+ "react-native-web": "catalog:",
+ "tamagui": "catalog:"
},
"devDependencies": {
- "@babel/core": "7.26.10",
- "@babel/plugin-transform-async-generator-functions": "^7.23.4",
- "@types/react": "^18.3.18",
- "eas-cli": "^7.2.0",
- "eslint": "8.55.0",
- "eslint-config-universe": "12.0.0",
- "prettier": "^3.1.0",
- "typescript": "5.3.3"
+ "@babel/core": "catalog:",
+ "@babel/plugin-transform-async-generator-functions": "catalog:",
+ "@types/react": "catalog:",
+ "eas-cli": "catalog:",
+ "eslint": "catalog:",
+ "eslint-config-universe": "catalog:",
+ "prettier": "catalog:",
+ "typescript": "catalog:"
},
"license": "UNLICENSED",
"private": true
diff --git a/demos/react-native-supabase-todolist/package.json b/demos/react-native-supabase-todolist/package.json
index 1d841b4b1..9f4f49983 100644
--- a/demos/react-native-supabase-todolist/package.json
+++ b/demos/react-native-supabase-todolist/package.json
@@ -8,52 +8,52 @@
"clean": "watchman watch-del-all && rm -rf .expo"
},
"dependencies": {
- "@azure/core-asynciterator-polyfill": "^1.0.2",
- "@expo/vector-icons": "^14.0.3",
- "@journeyapps/react-native-quick-sqlite": "^2.4.9",
+ "@azure/core-asynciterator-polyfill": "catalog:",
+ "@expo/vector-icons": "catalog:",
+ "@journeyapps/react-native-quick-sqlite": "catalog:",
"@powersync/attachments": "workspace:*",
"@powersync/common": "workspace:*",
"@powersync/react": "workspace:*",
"@powersync/react-native": "workspace:*",
- "@react-native-community/masked-view": "^0.1.11",
- "@react-navigation/drawer": "^7.1.1",
- "@react-navigation/native": "^7.0.14",
- "@rneui/base": "4.0.0-rc.8",
- "@rneui/themed": "4.0.0-rc.8",
- "@supabase/supabase-js": "~2.33.1",
- "base64-arraybuffer": "^1.0.2",
- "expo": "52.0.46",
- "expo-build-properties": "~0.13.2",
- "expo-camera": "~16.0.18",
- "expo-constants": "~17.0.8",
- "expo-crypto": "~14.0.2",
- "expo-file-system": "18.0.12",
- "expo-linking": "~7.0.5",
- "expo-router": "4.0.21",
- "expo-secure-store": "~14.0.1",
- "expo-splash-screen": "~0.29.22",
- "expo-status-bar": "~2.0.1",
- "lodash": "^4.17.21",
- "react": "18.3.1",
- "react-native": "0.76.9",
- "react-native-encrypted-storage": "^4.0.3",
- "react-native-gesture-handler": "~2.20.2",
- "react-native-prompt-android": "^1.1.0",
- "react-native-reanimated": "~3.16.7",
- "react-native-reanimated-table": "^0.0.2",
- "react-native-safe-area-context": "4.12.0",
- "react-native-screens": "~4.4.0",
- "react-navigation-stack": "^2.10.4"
+ "@react-native-masked-view/masked-view": "catalog:",
+ "@react-navigation/drawer": "catalog:",
+ "@react-navigation/native": "catalog:",
+ "@rneui/base": "catalog:",
+ "@rneui/themed": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "base64-arraybuffer": "catalog:",
+ "expo": "catalog:",
+ "expo-build-properties": "catalog:",
+ "expo-camera": "catalog:",
+ "expo-constants": "catalog:",
+ "expo-crypto": "catalog:",
+ "expo-file-system": "catalog:",
+ "expo-linking": "catalog:",
+ "expo-router": "catalog:",
+ "expo-secure-store": "catalog:",
+ "expo-splash-screen": "catalog:",
+ "expo-status-bar": "catalog:",
+ "lodash": "catalog:",
+ "react": "catalog:",
+ "react-native": "catalog:",
+ "react-native-encrypted-storage": "catalog:",
+ "react-native-gesture-handler": "catalog:",
+ "react-native-prompt-android": "catalog:",
+ "react-native-reanimated": "catalog:",
+ "react-native-reanimated-table": "catalog:",
+ "react-native-safe-area-context": "catalog:",
+ "react-native-screens": "catalog:",
+ "@react-navigation/stack": "catalog:"
},
"devDependencies": {
- "@babel/core": "^7.26.10",
- "@babel/plugin-transform-async-generator-functions": "^7.23.9",
- "@babel/preset-env": "^7.23.9",
- "@types/lodash": "^4.14.202",
- "@types/react": "~18.3.18",
- "babel-preset-expo": "^12.0.10",
- "prettier": "^3.2.5",
- "typescript": "^5.3.3"
+ "@babel/core": "catalog:",
+ "@babel/plugin-transform-async-generator-functions": "catalog:",
+ "@babel/preset-env": "catalog:",
+ "@types/lodash": "catalog:",
+ "@types/react": "catalog:",
+ "babel-preset-expo": "catalog:",
+ "prettier": "catalog:",
+ "typescript": "catalog:"
},
"private": true
}
diff --git a/demos/react-native-web-supabase-todolist/package.json b/demos/react-native-web-supabase-todolist/package.json
index a88d0993f..0898713c2 100644
--- a/demos/react-native-web-supabase-todolist/package.json
+++ b/demos/react-native-web-supabase-todolist/package.json
@@ -10,60 +10,60 @@
"clean": "watchman watch-del-all && rm -rf .expo"
},
"dependencies": {
- "@azure/core-asynciterator-polyfill": "^1.0.2",
- "@expo/metro-runtime": "^4.0.1",
- "@expo/vector-icons": "^14.0.2",
- "@journeyapps/react-native-quick-sqlite": "^2.4.9",
- "@journeyapps/wa-sqlite": "^1.3.2",
+ "@azure/core-asynciterator-polyfill": "catalog:",
+ "@expo/metro-runtime": "catalog:",
+ "@expo/vector-icons": "catalog:",
+ "@journeyapps/react-native-quick-sqlite": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
"@powersync/attachments": "workspace:*",
"@powersync/react": "workspace:*",
"@powersync/react-native": "workspace:*",
"@powersync/web": "workspace:*",
- "@react-native-async-storage/async-storage": "1.23.1",
- "@react-navigation/bottom-tabs": "^7.2.0",
- "@react-navigation/drawer": "^7.1.1",
- "@react-navigation/native": "^7.0.14",
- "@supabase/supabase-js": "^2.45.4",
- "@tanstack/react-query": "^5.66.0",
- "base64-arraybuffer": "^1.0.2",
- "expo": "52.0.46",
- "expo-blur": "~14.0.3",
- "expo-camera": "~16.0.18",
- "expo-constants": "~17.0.5",
- "expo-crypto": "~14.0.2",
- "expo-font": "~13.0.3",
- "expo-haptics": "~14.0.1",
- "expo-linking": "~7.0.5",
- "expo-router": "4.0.21",
- "expo-secure-store": "^14.0.1",
- "expo-splash-screen": "~0.29.21",
- "expo-status-bar": "~2.0.1",
- "expo-symbols": "~0.2.2",
- "expo-system-ui": "~4.0.8",
- "expo-web-browser": "~14.0.2",
- "react": "18.3.1",
- "react-dom": "18.3.1",
- "react-native": "0.76.9",
- "react-native-elements": "^3.4.3",
- "react-native-gesture-handler": "~2.20.2",
- "react-native-logs": "^5.3.0",
- "react-native-prompt-android": "^1.1.0",
- "react-native-reanimated": "~3.16.1",
- "react-native-safe-area-context": "4.12.0",
- "react-native-screens": "~4.4.0",
- "react-native-web": "~0.19.13",
- "react-native-webview": "13.12.5",
- "zod": "^3.24.2"
+ "@react-native-async-storage/async-storage": "catalog:",
+ "@react-navigation/bottom-tabs": "catalog:",
+ "@react-navigation/drawer": "catalog:",
+ "@react-navigation/native": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "@tanstack/react-query": "catalog:",
+ "base64-arraybuffer": "catalog:",
+ "expo": "catalog:",
+ "expo-blur": "catalog:",
+ "expo-camera": "catalog:",
+ "expo-constants": "catalog:",
+ "expo-crypto": "catalog:",
+ "expo-font": "catalog:",
+ "expo-haptics": "catalog:",
+ "expo-linking": "catalog:",
+ "expo-router": "catalog:",
+ "expo-secure-store": "catalog:",
+ "expo-splash-screen": "catalog:",
+ "expo-status-bar": "catalog:",
+ "expo-symbols": "catalog:",
+ "expo-system-ui": "catalog:",
+ "expo-web-browser": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-native": "catalog:",
+ "react-native-elements": "catalog:",
+ "react-native-gesture-handler": "catalog:",
+ "react-native-logs": "catalog:",
+ "react-native-prompt-android": "catalog:",
+ "react-native-reanimated": "catalog:",
+ "react-native-safe-area-context": "catalog:",
+ "react-native-screens": "catalog:",
+ "react-native-web": "catalog:",
+ "react-native-webview": "catalog:",
+ "zod": "catalog:"
},
"devDependencies": {
- "@babel/core": "^7.25.2",
- "@types/jest": "^29.5.12",
- "@types/react": "~18.3.12",
- "@types/react-test-renderer": "^18.3.0",
- "jest": "^29.2.1",
- "jest-expo": "~52.0.3",
- "react-test-renderer": "18.3.1",
- "typescript": "^5.3.3"
+ "@babel/core": "catalog:",
+ "@types/jest": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-test-renderer": "catalog:",
+ "jest": "catalog:",
+ "jest-expo": "catalog:",
+ "react-test-renderer": "catalog:",
+ "typescript": "catalog:"
},
"private": true
}
diff --git a/demos/react-supabase-todolist-optional-sync/package.json b/demos/react-supabase-todolist-optional-sync/package.json
index 7c51c0e54..2c612f1dc 100644
--- a/demos/react-supabase-todolist-optional-sync/package.json
+++ b/demos/react-supabase-todolist-optional-sync/package.json
@@ -11,32 +11,32 @@
"dependencies": {
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "@emotion/react": "11.11.4",
- "@emotion/styled": "11.11.5",
- "@journeyapps/wa-sqlite": "^1.3.2",
- "@mui/icons-material": "^5.15.12",
- "@mui/material": "^5.15.12",
- "@mui/x-data-grid": "^6.19.6",
- "@supabase/supabase-js": "^2.39.7",
- "formik": "^2.4.6",
- "lodash": "^4.17.21",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.22.3"
+ "@emotion/react": "catalog:",
+ "@emotion/styled": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
+ "@mui/icons-material": "catalog:",
+ "@mui/material": "catalog:",
+ "@mui/x-data-grid": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "formik": "catalog:",
+ "lodash": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-router-dom": "catalog:"
},
"devDependencies": {
- "@swc/core": "~1.6.0",
- "@types/lodash": "^4.14.202",
- "@types/node": "^20.11.25",
- "@types/react": "^18.2.64",
- "@types/react-dom": "^18.2.21",
- "@vitejs/plugin-react": "^4.2.1",
- "autoprefixer": "^10.4.18",
- "babel-loader": "^9.1.3",
- "typescript": "^5.4.2",
- "vite": "^5.1.5",
- "vite-plugin-pwa": "^0.19.2",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@swc/core": "catalog:",
+ "@types/lodash": "catalog:",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "@vitejs/plugin-react": "catalog:",
+ "autoprefixer": "catalog:",
+ "babel-loader": "catalog:",
+ "typescript": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-pwa": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/react-supabase-todolist-optional-sync/src/app/page.tsx b/demos/react-supabase-todolist-optional-sync/src/app/page.tsx
index 9be225013..1c64ec434 100644
--- a/demos/react-supabase-todolist-optional-sync/src/app/page.tsx
+++ b/demos/react-supabase-todolist-optional-sync/src/app/page.tsx
@@ -45,7 +45,7 @@ export default function EntryPage() {
return (
-
+
diff --git a/demos/react-supabase-todolist-optional-sync/src/app/views/sql-console/page.tsx b/demos/react-supabase-todolist-optional-sync/src/app/views/sql-console/page.tsx
index 6b0a13e1d..72e84395f 100644
--- a/demos/react-supabase-todolist-optional-sync/src/app/views/sql-console/page.tsx
+++ b/demos/react-supabase-todolist-optional-sync/src/app/views/sql-console/page.tsx
@@ -12,7 +12,7 @@ export type LoginFormParams = {
const DEFAULT_QUERY = 'SELECT * FROM lists';
export default function SQLConsolePage() {
- const inputRef = React.useRef();
+ const inputRef = React.useRef(null);
const [query, setQuery] = React.useState(DEFAULT_QUERY);
const { data: querySQLResult } = useQuery(query);
@@ -34,7 +34,7 @@ export default function SQLConsolePage() {
-
+
-
+
diff --git a/demos/react-supabase-todolist-optional-sync/vite.config.mts b/demos/react-supabase-todolist-optional-sync/vite.config.mts
index ab0b7d202..91bdb7e6c 100644
--- a/demos/react-supabase-todolist-optional-sync/vite.config.mts
+++ b/demos/react-supabase-todolist-optional-sync/vite.config.mts
@@ -34,6 +34,9 @@ export default defineConfig({
VitePWA({
registerType: 'autoUpdate',
includeAssets: ['powersync-logo.svg', 'supabase-logo.png', 'favicon.ico'],
+ workbox: {
+ maximumFileSizeToCacheInBytes: 3000000
+ },
manifest: {
theme_color: '#c44eff',
background_color: '#c44eff',
diff --git a/demos/react-supabase-todolist-sync-streams/package.json b/demos/react-supabase-todolist-sync-streams/package.json
index 41b859460..a13c65f14 100644
--- a/demos/react-supabase-todolist-sync-streams/package.json
+++ b/demos/react-supabase-todolist-sync-streams/package.json
@@ -11,32 +11,32 @@
"dependencies": {
"@powersync/react": "workspace:*",
"@powersync/web": "workspace:*",
- "@emotion/react": "11.11.4",
- "@emotion/styled": "11.11.5",
- "@journeyapps/wa-sqlite": "^1.3.1",
- "@mui/icons-material": "^5.15.12",
- "@mui/material": "^5.15.12",
- "@mui/x-data-grid": "^6.19.6",
- "@supabase/supabase-js": "^2.39.7",
- "formik": "^2.4.6",
- "lodash": "^4.17.21",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.22.3"
+ "@emotion/react": "catalog:",
+ "@emotion/styled": "catalog:",
+ "@journeyapps/wa-sqlite": "catalog:",
+ "@mui/icons-material": "catalog:",
+ "@mui/material": "catalog:",
+ "@mui/x-data-grid": "catalog:",
+ "@supabase/supabase-js": "catalog:",
+ "formik": "catalog:",
+ "lodash": "catalog:",
+ "react": "catalog:",
+ "react-dom": "catalog:",
+ "react-router-dom": "catalog:"
},
"devDependencies": {
- "@swc/core": "~1.6.0",
- "@types/lodash": "^4.14.202",
- "@types/node": "^20.11.25",
- "@types/react": "^18.2.64",
- "@types/react-dom": "^18.2.21",
- "@vitejs/plugin-react": "^4.2.1",
- "autoprefixer": "^10.4.18",
- "babel-loader": "^9.1.3",
- "typescript": "^5.4.2",
- "vite": "^5.1.5",
- "vite-plugin-pwa": "^0.19.2",
- "vite-plugin-top-level-await": "^1.4.1",
- "vite-plugin-wasm": "^3.3.0"
+ "@swc/core": "catalog:",
+ "@types/lodash": "catalog:",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:",
+ "@types/react-dom": "catalog:",
+ "@vitejs/plugin-react": "catalog:",
+ "autoprefixer": "catalog:",
+ "babel-loader": "catalog:",
+ "typescript": "catalog:",
+ "vite": "catalog:",
+ "vite-plugin-pwa": "catalog:",
+ "vite-plugin-top-level-await": "catalog:",
+ "vite-plugin-wasm": "catalog:"
}
}
diff --git a/demos/react-supabase-todolist-sync-streams/src/app/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/page.tsx
index f17886aac..8740b327d 100644
--- a/demos/react-supabase-todolist-sync-streams/src/app/page.tsx
+++ b/demos/react-supabase-todolist-sync-streams/src/app/page.tsx
@@ -51,7 +51,7 @@ export default function EntryPage() {
return (
-
+
diff --git a/demos/react-supabase-todolist-sync-streams/src/app/router.tsx b/demos/react-supabase-todolist-sync-streams/src/app/router.tsx
index 93647f6a9..e304e9c1d 100644
--- a/demos/react-supabase-todolist-sync-streams/src/app/router.tsx
+++ b/demos/react-supabase-todolist-sync-streams/src/app/router.tsx
@@ -7,7 +7,7 @@ import TodoListsPage from '@/app/views/todo-lists/page';
import ViewsLayout from '@/app/views/layout';
import SQLConsolePage from '@/app/views/sql-console/page';
import { useSupabase } from '@/components/providers/SystemProvider';
-import React from 'react';
+import React, { ReactNode } from 'react';
export const TODO_LISTS_ROUTE = '/views/todo-lists';
export const TODO_EDIT_ROUTE = '/views/todo-lists/:id';
@@ -16,11 +16,11 @@ export const REGISTER_ROUTE = '/auth/register';
export const SQL_CONSOLE_ROUTE = '/sql-console';
interface AuthGuardProps {
- children: JSX.Element;
+ children: ReactNode;
}
const AuthGuard = ({ children }: AuthGuardProps) => {
- const connector = useSupabase()
+ const connector = useSupabase();
const navigate = useNavigate();
React.useEffect(() => {
@@ -39,7 +39,7 @@ const AuthGuard = ({ children }: AuthGuardProps) => {
if (!connector.currentSession) {
navigate(LOGIN_ROUTE);
}
- }
+ };
if (connector.ready) {
loginGuard();
} else {
@@ -50,7 +50,6 @@ const AuthGuard = ({ children }: AuthGuardProps) => {
});
return () => l?.();
}
-
}, []);
return children;
};
@@ -96,4 +95,4 @@ export const router = createBrowserRouter([
}
]
}
-]);
\ No newline at end of file
+]);
diff --git a/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx b/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx
index 4cb0e84fb..294aefd02 100644
--- a/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx
+++ b/demos/react-supabase-todolist-sync-streams/src/app/views/sql-console/page.tsx
@@ -51,7 +51,7 @@ const TableDisplay = React.memo(({ data }: { data: ReadonlyArray }) => {
});
export default function SQLConsolePage() {
- const inputRef = React.useRef();
+ const inputRef = React.useRef(null);
const [query, setQuery] = React.useState(DEFAULT_QUERY);
const { data, error } = useQuery(query, [], {
@@ -73,7 +73,7 @@ export default function SQLConsolePage() {
-
+
-
+