Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
87dd671
updated useFind tests
piotrpospiech Nov 25, 2022
46213a7
useSyncEffect proposal
Feb 25, 2025
e1c65e3
chore(deps): bump @babel/runtime-corejs3 in /packages/react-meteor-data
dependabot[bot] Mar 11, 2025
3ab7172
Merge pull request #420 from meteor/dependabot/npm_and_yarn/packages/…
StorytellerCZ Mar 12, 2025
f0c06d5
chore(deps): bump @babel/runtime in /packages/react-meteor-data
dependabot[bot] Mar 12, 2025
5b1d45e
Merge pull request #421 from meteor/dependabot/npm_and_yarn/packages/…
StorytellerCZ Mar 12, 2025
98f39a4
Merge branch 'master' into tests-3.x
nachocodoner Mar 12, 2025
3749d4f
remove old hardness apps to run tests
nachocodoner Mar 12, 2025
1814ceb
add harness app to test react-meteor-data in Meteor 3
nachocodoner Mar 12, 2025
0e1c274
add harness app to test react-meteor-accounts in Meteor 3
nachocodoner Mar 12, 2025
c0a9a7f
ensure react-meteor-accounts tests pass
nachocodoner Mar 12, 2025
7d45b72
dont keep dependencies on package instead rely on harness test apps
nachocodoner Mar 12, 2025
405bbe4
update docs
nachocodoner Mar 12, 2025
3d7f5d2
dont need to add the packages
nachocodoner Mar 12, 2025
46767bb
Merge branch 'meteor:master' into master
Poyoman39 Mar 12, 2025
c6ca8f1
remove log
nachocodoner Mar 12, 2025
77cdf4b
remove log
nachocodoner Mar 12, 2025
6cc7897
add githubAction to pass ci tests
nachocodoner Mar 13, 2025
a503c6b
ensure ci runs properly
nachocodoner Mar 13, 2025
7082516
improve cache on ga runner
nachocodoner Mar 13, 2025
fd32f0d
Merge pull request #422 from meteor/tests-3.x
nachocodoner Mar 13, 2025
ba30dc0
Merge pull request #424 from meteor/ci-3.x
nachocodoner Mar 13, 2025
032d26e
chore(deps): bump ws and puppeteer
dependabot[bot] Mar 13, 2025
873b792
chore(deps): bump @babel/runtime in /tests/react-meteor-data-harness
dependabot[bot] Mar 13, 2025
29b6ea1
Merge pull request #425 from meteor/dependabot/npm_and_yarn/tests/rea…
nachocodoner Mar 13, 2025
44b628e
update for react-meteor-data test runner as well
nachocodoner Mar 13, 2025
c70ea6f
Merge pull request #426 from meteor/dependabot/npm_and_yarn/tests/rea…
nachocodoner Mar 13, 2025
4adc227
ensure compatibility with react 18 version
nachocodoner Mar 13, 2025
46c3bf7
upgrade meteor-node-stubs to latest
nachocodoner Mar 13, 2025
6461a9e
Merge pull request #427 from meteor/upgrade-react-compatibility
nachocodoner Mar 13, 2025
2276d7c
add rece condition test
PedroMarianoAlmeida Mar 13, 2025
6a4323f
Perform the initial data fetch inside the effect
PedroMarianoAlmeida Mar 13, 2025
cd51c72
Verify reference stability between rerenders working again
PedroMarianoAlmeida Mar 13, 2025
55993ad
remove not used parameters
PedroMarianoAlmeida Mar 13, 2025
8fe2d99
Apply suggestions from code review
Poyoman39 Mar 17, 2025
f83284f
Fixes after review
Poyoman39 Mar 17, 2025
0ae73e9
UseFind should work like other hooks
Poyoman39 Mar 21, 2025
dceca13
Revert useFind changes
PedroMarianoAlmeida Mar 24, 2025
842a3a2
skipping test
PedroMarianoAlmeida Mar 24, 2025
e2a9103
Merge pull request #428 from PedroMarianoAlmeida/concurrency-issue-wi…
Grubba27 Apr 1, 2025
880bd3b
Merge branch 'meteor:master' into master
Poyoman39 Apr 3, 2025
f37bef5
Merge pull request #431 from Poyoman39/patch-1
nachocodoner Apr 3, 2025
c5ec036
remove line to verify fix proposals
nachocodoner Apr 3, 2025
a8e07bb
Merge remote-tracking branch 'Poyoman39/master' into fix-concurrency-…
nachocodoner Apr 3, 2025
27ca6b4
Merge pull request #433 from meteor/fix-concurrency-usefind
nachocodoner Apr 3, 2025
eabb168
ensure test CI pass on master properly
nachocodoner Apr 3, 2025
ff2704a
chore(deps): bump @babel/runtime from 7.14.0 to 7.27.0
dependabot[bot] Apr 3, 2025
d2edccc
fix: premature cleanup in strict mode and improved performance
welkinwong Mar 14, 2025
77d60be
test: add tests for useSubscribeSuspense functionality
welkinwong Apr 4, 2025
f156bf4
Merge pull request #434 from meteor/dependabot/npm_and_yarn/babel/run…
StorytellerCZ Apr 5, 2025
0adb1e9
Fix the issue where useFind suspense does not update the cache on the…
welkinwong Mar 21, 2025
eff5a2b
test: add tests for useFindSuspense functionality and ensure proper c…
welkinwong Apr 10, 2025
55cdea6
Merge remote-tracking branch 'welkinwong/fix-use-find' into fix-perf-…
nachocodoner Apr 10, 2025
7edf8e4
add few asserts for better understanding
nachocodoner Apr 10, 2025
f508e39
Merge pull request #435 from meteor/fix-perf-suspense-others
nachocodoner Apr 10, 2025
3154c80
fix: #443 useSyncEffect Breaks useFind Reactivity Under Suspense
welkinwong Apr 12, 2025
5f99909
bump react-meteor-data next beta version
nachocodoner Apr 16, 2025
7164335
update versions file
nachocodoner Apr 16, 2025
874c269
Merge pull request #438 from welkinwong/master
nachocodoner Apr 16, 2025
afb6ca5
bump to a new react-meteor-data version
nachocodoner Apr 16, 2025
2ea367e
perf(suspense): optimize handling of multiple suspense/useSubscribe
welkinwong Apr 17, 2025
be940b7
test(suspense): add tests for multiple active subscriptions
welkinwong Apr 17, 2025
2155d39
fix ts syntax to favor swc compilation
nachocodoner Apr 24, 2025
b4a54fe
clean code
nachocodoner Apr 24, 2025
1983032
Merge pull request #442 from meteor/fix-types
nachocodoner Apr 24, 2025
059378a
Merge pull request #441 from welkinwong/optimizing-multi-sps-sub
nachocodoner Apr 24, 2025
c1a44cb
react-meteor-data: restore TS support via zodern:types
repetitioestmaterstudiorum May 30, 2025
65213e6
revert: 0ae73e9
italojs Jun 11, 2025
9c06ae9
update: enhance TypeScript support and versioning for react-meteor-data
italojs Jun 11, 2025
aabf046
releasing 4.0.0
italojs Jun 13, 2025
8155aee
Merge branch 'pr/1' into vite
malua Jun 15, 2025
f4203c5
fix: index file is now typescript in upstream
malua Jun 15, 2025
fd4b3e2
refactor: replace lodash.isequal with fast-equals
malua Jun 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/workflows/test-react-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Meteor CI

on:
push:
branches:
- master
pull_request:

jobs:
build:
runs-on: ubuntu-latest

name: Meteor react-packages tests

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Cache Meteor
uses: actions/cache@v4
with:
path: ~/.meteor
key: meteor-cache

- name: Setup Meteor
uses: meteorengineer/setup-meteor@v2
with:
meteor-release: '3.1.2'

- name: Prepare mtest
run: |
meteor npm i -g @zodern/mtest

- name: Install and test in react-meteor-data
working-directory: tests/react-meteor-data-harness
run: |
meteor npm install
meteor npm run test:ci

- name: Install and test in react-meteor-accounts-harness
working-directory: tests/react-meteor-accounts-harness
run: |
meteor npm install
meteor npm run test:ci
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
# Meteor react-packages (npm)

> This is a npm-published fork of the official Meteor [`react-packages`](https://github.com/meteor/react-packages) repository.
> This allows us leave bundling of React up to Vite, instead of relying on Meteor's bundling system. Giving a little
> This allows us leave bundling of React up to Vite, instead of relying on Meteor's bundling system. Giving a little
> bit more flexibility in terms of configuration through Vite.
>
>
> See [`meteor-vite`](https://github.com/JorgenVatle/meteor-vite) for more details and examples.

## Installation

```shell
meteor npm i @meteor-vite/react-meteor-data
```

## Usage

The API is exactly the same as Meteor's [`react-meteor-data`](https://github.com/meteor/react-packages/tree/master/packages/react-meteor-data) package.
Just replace your `meteor/react-meteor-data` imports with `@meteor-vite/react-meteor-data`

```tsx
import { Meteor } from 'meteor/meteor';
import { useTracker } from '@meteor-vite/react-meteor-data';
import { Meteor } from "meteor/meteor";
import { useTracker } from "@meteor-vite/react-meteor-data";

export function UserID() {
const user = useTracker(() => Meteor.user(), []);
return (<div>User ID: { user._id }</div>)
const user = useTracker(() => Meteor.user(), []);
return <div>User ID: {user._id}</div>;
}
```

To run tests for a Meteor react package, navigate to its `tests/*` app and execute `npm test`.
18 changes: 14 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions packages/react-meteor-accounts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,5 @@
"name": "meteor-react-accounts",
"scripts": {
"make-types": "npx typescript react-accounts.tsx --jsx preserve --declaration --emitDeclarationOnly --esModuleInterop --outDir types --strict"
},
"devDependencies": {
"@testing-library/react": "^10.0.2",
"@testing-library/react-hooks": "^7.0.2",
"@tsconfig/recommended": "^1.0.1",
"@types/meteor": "^1.4.42",
"@types/react": "^16.9.34",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-test-renderer": "16.13.1",
"typescript": "^4.0.3"
}
}
18 changes: 4 additions & 14 deletions packages/react-meteor-accounts/react-accounts.tests.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import {
// Prepare method for clearing DB (doesn't need to be isomorphic).
if (Meteor.isServer) {
Meteor.methods({
reset() {
Meteor.users.remove({});
async reset() {
await Meteor.users.removeAsync({});
},
});
}
Expand Down Expand Up @@ -54,19 +54,9 @@ if (Meteor.isClient) {
// common test arrangements
async function beforeEach() {
// reset DB; must complete before creation to avoid potential overlap
await new Promise((resolve, reject) => {
Meteor.call("reset", (error, result) => {
if (error) reject(error);
else resolve(result);
});
});
await Meteor.callAsync("reset");
// prepare sample user
await new Promise<void>((resolve, reject) => {
Accounts.createUser({ username, password }, (error) => {
if (error) reject(error);
else resolve();
});
});
await Accounts.createUserAsync({ username, password });
// logout since `createUser` auto-logs-in
await logout();
}
Expand Down
5 changes: 0 additions & 5 deletions packages/react-meteor-data/.npm/package/npm-shrinkwrap.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 24 additions & 22 deletions packages/react-meteor-data/.versions
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
allow-deny@2.0.0
[email protected].1
allow-deny@2.1.0
[email protected].3
[email protected]
[email protected]
[email protected]
Expand All @@ -9,50 +9,52 @@ [email protected]
[email protected]
[email protected]
[email protected]
ddp-client@3.0.2
ddp-client@3.1.0
[email protected]
ddp-server@3.0.2
ddp-server@3.1.2
[email protected]
[email protected]
[email protected].9
[email protected].10
[email protected]
[email protected].2
[email protected].3
[email protected]
[email protected]
[email protected]
[email protected].5
[email protected].6
[email protected]
[email protected]
[email protected]
[email protected]
local-test:[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
local-test:[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
mongo@2.0.2
mongo-decimal@0.1.4-beta300.7
mongo@2.1.1
mongo-decimal@0.2.0
[email protected]
[email protected]
npm-mongo@4.17.4
npm-mongo@6.10.2
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
react-meteor-data@3.0.3
react-meteor-data@4.0.0
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
socket-stream-client@0.5.3
[email protected].1
[email protected].0
socket-stream-client@0.6.0
[email protected].3
[email protected].1
[email protected]
typescript@5.4.3
typescript@5.6.3
[email protected]
[email protected].3
[email protected].6
[email protected]
zodern:[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ if (Meteor.isDevelopment) {
}

export { useTracker } from './useTracker';
export { withTracker } from './withTracker.tsx';
export { withTracker } from './withTracker';
export { useFind } from './useFind';
export { useSubscribe } from './useSubscribe';
51 changes: 8 additions & 43 deletions packages/react-meteor-data/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions packages/react-meteor-data/package-types.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"typesEntry": "react-meteor-data.d.ts",
"modules": {
"suspense": "./suspense/react-meteor-data.d.ts"
}
}
14 changes: 7 additions & 7 deletions packages/react-meteor-data/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,30 @@
Package.describe({
name: 'react-meteor-data',
summary: 'React hook for reactively tracking Meteor data',
version: '3.0.3',
version: '4.0.0',
documentation: 'README.md',
git: 'https://github.com/meteor/react-packages'
})

Npm.depends({
'lodash.isequal': '4.5.0',
'lodash.remove': '4.7.0'
'fast-equals': '5.2.2'
})

Package.onUse((api) => {
api.versionsFrom(['1.8.2', '1.12', '2.0', '2.3', '3.0'])
api.use('tracker')
api.use('ecmascript')
api.use('typescript')
api.addAssets('react-meteor-data.d.ts', 'server')
api.addAssets('suspense/react-meteor-data.d.ts', 'server')
api.use('zodern:[email protected]', 'server')

api.mainModule('index.js', ['client', 'server'], { lazy: true })
api.mainModule('index.ts', ['client', 'server'], { lazy: true })
})

Package.onTest((api) => {
api.use(['ecmascript', 'typescript', 'reactive-dict', 'reactive-var', 'tracker', 'tinytest', 'underscore', 'mongo'])
api.use('test-helpers')
api.use('react-meteor-data')
api.mainModule('tests.js')
api.use('[email protected]', 'client');

api.mainModule('tests.js');
})
Loading