Merge branch 'release-2.7.4' into bugfix/fix-problem-with-publish-client-async-methods

This commit is contained in:
denihs
2022-09-22 15:05:12 -04:00
48 changed files with 521 additions and 212 deletions

164
.mailmap
View File

@@ -1,164 +0,0 @@
# The presence of this file makes it easier to find GitHub usernames for
# History.md.
#
# This is a git dotfile that affects the output of 'git shortlog'. eg, run:
# git shortlog -s release/METEOR@1.0.1..HEAD
# to get a sorted list of all committers to revisions in HEAD but not
# in 1.0.1. To get the list including email addresses (useful for input
# to the script below) include --email as well.
#
# For any emails that show up in the shortlog that aren't in one of
# these lists, figure out their GitHub username and add them.
#
# A command-line way to get the GitHub username for an author:
# scripts/admin/find-author-github.sh 'User Name <foo@bar.com>'
# (Note that this script always outputs GITHUB so you should manually
# check to see if they are an Meteor Software employee!)
GITHUB: 0a- <a@0a.io>
GITHUB: adnissen <andrew_nissen@yahoo.com>
GITHUB: aldeed <eric@dairystatedesigns.com>
GITHUB: AlexeyMK <alexey@alexeymk.com>
GITHUB: andylash <andy@squidnet.com>
GITHUB: ansman <nicklas@ansman.se>
GITHUB: anstarovoyt <andrey.starovoyt@jetbrains.com>
GITHUB: apendua <apendua@gmail.com>
GITHUB: awatson1978 <awatson1978@gmail.com>
GITHUB: awwx <andrew.wilcox@gmail.com>
GITHUB: babenzele <tim.p.phillips@gmail.com>
GITHUB: benweissmann <benweissmann@gmail.com>
GITHUB: bwhitty <bwhitten518@gmail.com>
GITHUB: Cangit <fredricendrerud@gmail.com>
GITHUB: chrisbridgett <me@chrisbridgett.com>
GITHUB: christianbundy <christianbundy@fraction.io>
GITHUB: cmather <mather.chris@gmail.com>
GITHUB: codeinthehole <david.winterbottom@gmail.com>
GITHUB: colllin <collindo@gmail.com>
GITHUB: cryptoquick <faustianightmare@gmail.com>
GITHUB: d4nyll <dan@danyll.com>
GITHUB: dandv <ddascalescu+github@gmail.com>
GITHUB: DanielDent <DanielDent@users.noreply.github.com>
GITHUB: DanielDent <sourcecode@contactdaniel.net>
GITHUB: DanielDornhardt <daniel@dornhardt.com>
GITHUB: davegonzalez <gonzalez.dalex@gmail.com>
GITHUB: DenisGorbachev <Denis.D.Gorbachev@gmail.com>
GITHUB: DenisGorbachev <Denis.Gorbachev@faster-than-wind.ru>
GITHUB: ducdigital <duc@ducdigital.com>
GITHUB: duckspeaker <gallo.j@gmail.com>
GITHUB: ecwyne <ecwyne@users.noreply.github.com>
GITHUB: emgee3 <hello@gravitronic.com>
GITHUB: EOT <eot@gmx.at>
GITHUB: fay-jai <willson.mock@gmail.com>
GITHUB: felixrabe <felix@rabe.io>
GITHUB: FooBarWidget <honglilai@gmail.com>
GITHUB: FredericoC <frederico.carvalho@3stack.com.au>
GITHUB: Gaelan <gbs@canishe.com>
GITHUB: graemian <graeme@graemep.co.za>
GITHUB: gsuess <garic.suess@gmail.com>
GITHUB: hwillson <hugh@octonary.com>
GITHUB: icellan <icellan@icellan.com>
GITHUB: ImtiazMajeed <imtiazmaj@gmail.com>
GITHUB: jacott <geoffjacobsen@gmail.com>
GITHUB: jakozaur <jacek@migdal.pl>
GITHUB: JamesLefrere <jlefrere@gmail.com>
GITHUB: jbruni <contato@jbruni.com.br>
GITHUB: jfhamlin <jfhamlin@gmail.com>
GITHUB: jperl <perl.jonathan@gmail.com>
GITHUB: kentonv <temporal@gmail.com>
GITHUB: kevinchiu <kevin.gc@gmail.com>
GITHUB: knownasilya <ilya@burstcreations.com>
GITHUB: LyuGGang <me@lyuwonkyung.com>
GITHUB: marcandre <github@marc-andre.ca>
GITHUB: mart-jansink <m.jansink@gmail.com>
GITHUB: matteodem <mat.demicheli@gmail.com>
GITHUB: Maxhodges <Max@whiterabbitpress.com>
GITHUB: MaximDubrovin <maxxdubrovin@gmail.com>
GITHUB: meawoppl <meawoppl@gmail.com>
GITHUB: meonkeys <haircut@gmail.com>
GITHUB: michaelbishop <michael@michaelsplace.net>
GITHUB: mitar <mitar.git@tnode.com>
GITHUB: mitar <mitar.github@tnode.com>
GITHUB: mizzao <mizzao@gmail.com>
GITHUB: mquandalle <maxime.quandalle@gmail.com>
GITHUB: mquandalle <maxime@quandalle.com>
GITHUB: murillo128 <sergio.garcia.murillo@gmail.com>
GITHUB: musically-ut <musically.ut@gmail.com>
GITHUB: nathan-muir <ndmuir@gmail.com>
GITHUB: Neftedollar <oildollar@gmail.com>
GITHUB: netanelgilad <netanelgilad@gmail.com>
GITHUB: ogourment <ogourment@smarterportal.com>
GITHUB: ograycode <jason@theograys.com>
GITHUB: omeid <public@omeid.me>
GITHUB: OyoKooN <nathan@sxnlabs.com>
GITHUB: paulswartz <paulswartz@gmail.com>
GITHUB: pcjpcj2 <pcjpcj2@gmail.com>
GITHUB: Pent <jon@empire5design.com>
GITHUB: physiocoder <ferro.roberto@email.it>
GITHUB: PooMaster <peter.d.curtis@gmail.com>
GITHUB: prapicault <pascal@rapicault.net>
GITHUB: prapicault <pascal@rapicorp.com>
GITHUB: Primigenus <rchoudhury@gmail.com>
GITHUB: pscanf <paolo.scanferla@mondora.com>
GITHUB: queso <joshua.owens@gmail.com>
GITHUB: rbabayoff <ronen@lavaina.com>
GITHUB: rcy <rcyeske@gmail.com>
GITHUB: rdickert <robert.dickert@gmail.com>
GITHUB: restebanez <restebanez@mdsol.com>
GITHUB: rgoomar <rishig92@gmail.com>
GITHUB: rgould <rwgould@gmail.com>
GITHUB: RichardLitt <richard.littauer@gmail.com>
GITHUB: richguan <guan.rich@gmail.com>
GITHUB: rick-golden-healthagen <rick.golden@healthagen.com>
GITHUB: rissem <rissem@gmail.com>
GITHUB: rjakobsson <robin@hopjakk.se>
GITHUB: RobertLowe <robert@iblargz.com>
GITHUB: romanzolotarev <romanzolotarev@me.com>
GITHUB: rosh93 <rosh93@gmail.com>
GITHUB: ryw <ry@rywalker.com>
GITHUB: rzymek <rzymek@gmail.com>
GITHUB: sdarnell <stephen@darnell.plus.com>
GITHUB: Siilwyn <Siilwyn@users.noreply.github.com>
GITHUB: smallhelm <smallhelm@users.noreply.github.com>
GITHUB: subhog <hubert@orlikarnia.com>
GITHUB: svda <svdakker@gmail.com>
GITHUB: Tarang <Tarang@users.noreply.github.com>
GITHUB: tbjers <torgny@xorcode.com>
GITHUB: thatneat <thatneat@users.noreply.github.com>
GITHUB: timhaines <tmhaines@gmail.com>
GITHUB: timoabend <timo.abend@liquidmotions.de>
GITHUB: tmeasday <tom@thesnail.org>
GITHUB: TomFreudenberg <tom.freudenberg@4commerce.de>
GITHUB: trusktr <joe@trusktr.io>
GITHUB: twhy <tom.wanghaiyi@gmail.com>
GITHUB: Urigo <uri.goldshtein@gmail.com>
GITHUB: waitingkuo <waitingkuo0527@gmail.com>
GITHUB: wulfmeister <wulfmeister@users.noreply.github.com>
GITHUB: yauh <stephan@yauh.de>
GITHUB: yeputons <egor.suvorov@gmail.com>
GITHUB: zol <zol@percolatestudio.com>
METEOR: arbesfeld <arbesfeld@gmail.com>
METEOR: avital <avital@thewe.net>
METEOR: benjamn <ben@meteor.com>
METEOR: benjamn <bn@cs.stanford.edu>
METEOR: debergalis <matt@meteor.com>
METEOR: dgreensp <dgreenspan@alum.mit.edu>
METEOR: ekatek <ekate@meteor.com>
METEOR: estark37 <emily@meteor.com>
METEOR: estark37 <estark37@gmail.com>
METEOR: glasser <glasser@davidglasser.net>
METEOR: glasser <glasser@meteor.com>
METEOR: gschmidt <geoff@geoffschmidt.com>
METEOR: justinsb <justin@fathomdb.com>
METEOR: karayu <lele.yu@gmail.com>
METEOR: mariapacana <maria.pacana@gmail.com>
METEOR: multilinear <mbrewer@meteor.com>
METEOR: n1mmy <nim@meteor.com>
METEOR: sixolet <naomi@meteor.com>
METEOR: Slava <imslavko@gmail.com>
METEOR: Slava <slava@meteor.com>
METEOR: stubailo <s.stubailo@gmail.com>
METEOR: stubailo <sashko@meteor.com>
METEOR: stubailo <sashko@mit.edu>
METEOR: stubailo <sashko@stubailo.com>
METEOR: yyx990803 <yyx990803@gmail.com>

View File

@@ -49,8 +49,7 @@ Current Reviewers:
- [@aquinoit](https://github.com/aquinoit)
- [@Grubba27](https://github.com/Grubba27)
- [@filipenevola](https://github.com/filipenevola)
- [@Grubba27](https://github.com/Grubba27)
- [@StorytellerCZ](https://github.com/StorytellerCZ)
- [@StorytellerCZ](https://github.com/StorytellerCZ)
- [@zodern](https://github.com/zodern)
- [@CaptainN](https://github.com/CaptainN)
- [@radekmie](https://github.com/radekmie)
@@ -73,7 +72,6 @@ Current Core Committers:
- [@edimarlnx](https://github.com/edimarlnx)
- [@matheusccastroo](https://github.com/matheusccastroo)
- [@eduwr](https://github.com/eduwr)
- [@Grubba27](https://github.com/Grubba27)
### Tracking project work

View File

@@ -140,41 +140,49 @@ Create a basic [Svelte](https://svelte.dev/) app.
Create a basic [React](https://reactjs.org) + [Tailwind CSS](https://tailwindcss.com) app.
`--chakra-ui`
Create a basic [chakra-ui](https://chakra-ui.com/) app.
`--solid`
Create a basic [solid](https://www.solidjs.com/) app.
**Packages**
| | Default (`--react`) | `--bare` | `--full` | `--minimal` | `--blaze`| `--apollo` | `--vue` | `--svelte` | `--tailwind` |
|------------------------------------------------------------------------------------------------------|:-------------------:|:---------:|:---------:|:-----------:|:--------:|:----------:|:-------:|:----------:|:------------:|
| [autopublish](https://atmospherejs.com/meteor/autopublish) |X| | | |X| | |X|X|
| [akryum:vue-component](https://atmospherejs.com/akryum/vue-component) | | | | | | |X| | |
| [apollo](https://atmospherejs.com/meteor/apollo) | | | | | |X| | | |
| [blaze-html-templates](https://atmospherejs.com/meteor/blaze-html-templates) | | |X| |X| | | | |
| [ecmascript](https://atmospherejs.com/meteor/ecmascript) |X|X|X|X|X|X|X|X|X|
| [es5-shim](https://atmospherejs.com/meteor/es5-shim) |X|X|X|X|X|X|X|X|X|
| [hot-module-replacement](https://atmospherejs.com/meteor/hot-module-replacement) |X| | | |X|X| | |X|
| [insecure](https://atmospherejs.com/meteor/insecure) |X| | | |X| | |X|X|
| [johanbrook:publication-collector](https://atmospherejs.com/meteor/johanbrook/publication-collector) | | |X| | |X| | |
| [jquery](https://atmospherejs.com/meteor/jquery) | | |X| |X| | | |
| [ostrio:flow-router-extra](https://atmospherejs.com/meteor/ostrio/flow-router-extra) | | |X|| | | | | |
| [less](https://atmospherejs.com/meteor/less) | | |X| | | | | | |
| [meteor](https://atmospherejs.com/meteor/meteor) | | | |X| | | | | |
| [meteor-base](https://atmospherejs.com/meteor/meteor-base) |X|X|X| |X|X|X|X|X|
| [mobile-experience](https://atmospherejs.com/meteor/mobile-experience) |X|X|X| |X|X|X|X|X|
| [mongo](https://atmospherejs.com/meteor/mongo) |X|X|X| |X|X|X|X|X|
| [meteortesting:mocha](https://atmospherejs.com/meteortesting/mocha) | | |X| | | |X| |
| [reactive-var](https://atmospherejs.com/meteor/reactive-var) |X|X|X| |X|X|X|X|X|
| [rdb:svelte-meteor-data](https://atmospherejs.com/rdb/svelte-meteor-data) | | | | | | | |X| |
| [server-render](https://atmospherejs.com/meteor/server-render) | | | |X| |X|X| | |
| [shell-server](https://atmospherejs.com/meteor/shell-server) | |X| |X|X|X|X|X |
| [standard-minifier-css](https://atmospherejs.com/meteor/standard-minifier-css) |X|X|X|X|X|X|X|X|X|
| [standard-minifier-js](https://atmospherejs.com/meteor/standard-minifier-js) |X|X|X|X|X|X|X|X|X|
| [static-html](https://atmospherejs.com/meteor/static-html) | |X| |X| |X|X|X| |
| [svelte:compiler](https://atmospherejs.com/svelte/compiler) | | | | | | | |X| |
| [swydo:graphql](https://atmospherejs.com/swydo/graphql) | | | | | |X| | | |
| [tailwindcss](https://tailwindcss.com) | |X|X| |X| |X| |X|
| [tracker](https://atmospherejs.com/meteor/tracker) | |X|X| |X| |X| | |
| [typescript](https://atmospherejs.com/meteor/typescript) |X|X|X|X|X|X|X|X|X|
| [webapp](https://atmospherejs.com/meteor/webapp) | | | |X| | | | | |
| [react-meteor-data](https://atmospherejs.com/meteor/react-meteor-data) |X| | | | | | | |X|
| | Default (`--react`) | `--bare` | `--full` | `--minimal` | `--blaze` | `--apollo` | `--vue` | `--svelte` | `--tailwind` | `--chakra-ui` | `--solid` |
|------------------------------------------------------------------------------------------------------|:-------------------:|:--------:|:--------:|:-----------:|:---------:|:----------:|:-------:|:----------:|:------------:|:-------------:|:---------:|
| [autopublish](https://atmospherejs.com/meteor/autopublish) | X | | | | X | | | X | X | X | X |
| [akryum:vue-component](https://atmospherejs.com/akryum/vue-component) | | | | | | | X | | | | |
| [apollo](https://atmospherejs.com/meteor/apollo) | | | | | | X | | | | | |
| [blaze-html-templates](https://atmospherejs.com/meteor/blaze-html-templates) | | | X | | X | | | | | | |
| [ecmascript](https://atmospherejs.com/meteor/ecmascript) | X | X | X | X | X | X | X | X | X | X | X |
| [es5-shim](https://atmospherejs.com/meteor/es5-shim) | X | X | X | X | X | X | X | X | X | X | X |
| [hot-module-replacement](https://atmospherejs.com/meteor/hot-module-replacement) | X | | | | X | X | | | X | X | X |
| [insecure](https://atmospherejs.com/meteor/insecure) | X | | | | X | | | X | X | X | X |
| [johanbrook:publication-collector](https://atmospherejs.com/meteor/johanbrook/publication-collector) | | | X | | | X | | | | | |
| [jquery](https://atmospherejs.com/meteor/jquery) | | | X | | X | | | | | | |
| [ostrio:flow-router-extra](https://atmospherejs.com/meteor/ostrio/flow-router-extra) | | | X | | | | | | | | |
| [less](https://atmospherejs.com/meteor/less) | | | X | | | | | | | | |
| [meteor](https://atmospherejs.com/meteor/meteor) | | | | X | | | | | | | |
| [meteor-base](https://atmospherejs.com/meteor/meteor-base) | X | X | X | | X | X | X | X | X | X | X |
| [mobile-experience](https://atmospherejs.com/meteor/mobile-experience) | X | X | X | | X | X | X | X | X | X | X |
| [mongo](https://atmospherejs.com/meteor/mongo) | X | X | X | | X | X | X | X | X | X | X |
| [meteortesting:mocha](https://atmospherejs.com/meteortesting/mocha) | | | X | | | | X | | | | |
| [reactive-var](https://atmospherejs.com/meteor/reactive-var) | X | X | X | | X | X | X | X | X | X | X |
| [rdb:svelte-meteor-data](https://atmospherejs.com/rdb/svelte-meteor-data) | | | | | | | | X | | | |
| [server-render](https://atmospherejs.com/meteor/server-render) | | | | X | | X | X | | | | |
| [shell-server](https://atmospherejs.com/meteor/shell-server) | | X | | X | X | X | X | X | X | X | X |
| [standard-minifier-css](https://atmospherejs.com/meteor/standard-minifier-css) | X | X | X | X | X | X | X | X | X | X | X |
| [standard-minifier-js](https://atmospherejs.com/meteor/standard-minifier-js) | X | X | X | X | X | X | X | X | X | X | X |
| [static-html](https://atmospherejs.com/meteor/static-html) | | X | | X | | X | X | X | | | |
| [svelte:compiler](https://atmospherejs.com/svelte/compiler) | | | | | | | | X | | | |
| [swydo:graphql](https://atmospherejs.com/swydo/graphql) | | | | | | X | | | | | |
| [tailwindcss](https://tailwindcss.com) | | X | X | | X | | X | | X | | |
| [tracker](https://atmospherejs.com/meteor/tracker) | | X | X | | X | | X | | | | |
| [typescript](https://atmospherejs.com/meteor/typescript) | X | X | X | X | X | X | X | X | X | X | X |
| [webapp](https://atmospherejs.com/meteor/webapp) | | | | X | | | | | | | |
| [react-meteor-data](https://atmospherejs.com/meteor/react-meteor-data) | X | | | | | | | | X | X | |
<h2 id="meteorloginlogout">meteor login / logout</h2>

View File

@@ -5,7 +5,7 @@ description: Describes the high-level features and actions for the Meteor projec
## Introduction
Last update: August 4, 2022.
Last update: August 31, 2022.
This document describes the high-level features and actions for the Meteor project in the near-to-medium term future.
The description of many items include sentences and ideas from Meteor community members.
@@ -45,6 +45,11 @@ Contributors are encouraged to focus their efforts on work that aligns with the
- Remove Fibers dependency from Meteor Public APIs;
- Remove Fibers entirely;
### Community items
- Release Blaze 2.6.2; ([Milestone](https://github.com/meteor/blaze/milestone/9))
- Vue 3 integration; ([Forums](https://forums.meteor.com/t/status-of-vue-3-meteor/57915/25) / [Discussion](https://github.com/meteor/meteor/discussions/11521))
- SolidJS starter template;
### Next educational items
- Create a new Meteor Guide; ([Current Guide](https://guide.meteor.com/))
- Login and Accounts course; ([Meteor University](https://university.meteor.com/))
@@ -54,7 +59,6 @@ Contributors are encouraged to focus their efforts on work that aligns with the
We plan to implement these items in the near future. Community help would be greatly appreciated.
- ES Modules Support; ([Discussion](https://github.com/meteor/meteor/discussions/11727))
- MongoDB 6.0 Support; ([Discussion](https://github.com/meteor/meteor/discussions/12092))
- Vue 3 integration; ([Forums](https://forums.meteor.com/t/status-of-vue-3-meteor/57915/25) / [Discussion](https://github.com/meteor/meteor/discussions/11521))
- Improve Meteor build time; ([Discussion](https://github.com/meteor/meteor/discussions/11587))
- HTTP/3 Support;
- Tree-shaking; ([PR](https://github.com/meteor/meteor/pull/11164))

View File

@@ -37,6 +37,33 @@ Here are the newly added methods (you can see this description and the code [her
for await (const document of collection.find(query, options)) /* ... */
```
<h3 id="how-do-i-update">How can I start using these new features?</h3>
We got a few examples for making it easy to use these new feature, you can look the code snippet bellow
```js
// Before 2.8, we would use something like this
export const removeByID = ({ id }) => {
SomeCollection.remove({ _id: id });
};
// Now we can also do like this
export const removeByIDAsync = async ({ id }) => {
await SomeCollection.removeAsync({ _id: id });
};
Meteor.methods({
//...
removeByID,
removeByIDAsync,
});
// In UI use Meteor.call('removeByID', { id }) or Meteor.call('removeByIDAsync', { id })
```
More examples can be retrieved from [this commit](https://github.com/fredmaiaarantes/simpletasks/compare/main...mongodb-async-api).
<h3 id="should-i-update">Can I update to this version without changing my app?</h3>
Yes. You can update to this version without changing your app.

View File

@@ -58,6 +58,11 @@ DDP.randomStream = name => {
* @summary Connect to the server of a different Meteor application to subscribe to its document sets and invoke its remote methods.
* @locus Anywhere
* @param {String} url The URL of another Meteor application.
* @param {Object} [options]
* @param {Boolean} options.reloadWithOutstanding is it OK to reload if there are outstanding methods?
* @param {Object} options.headers extra headers to send on the websockets connection, for server-to-server DDP only
* @param {Object} options._sockjsOptions Specifies options to pass through to the sockjs client
* @param {Function} options.onDDPNegotiationVersionFailure callback when version negotiation fails.
*/
DDP.connect = (url, options) => {
const ret = new Connection(url, options);

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: 'The Meteor command-line tool',
version: '2.8.0-beta.5',
version: '2.8.0-beta.7',
});
Package.includeTool();

View File

@@ -2,7 +2,7 @@
Package.describe({
summary: "Core Meteor environment",
version: '1.10.1-beta280.5'
version: '1.10.1-beta280.7'
});
Package.registerBuildPlugin({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's client-side datastore: a port of MongoDB to Javascript",
version: '1.9.0-beta280.5'
version: '1.9.0-beta280.7'
});
Package.onUse(api => {

View File

@@ -1,6 +1,6 @@
Package.describe({
name: "modules",
version: "0.19.0-beta280.5",
version: "0.19.0-beta280.7",
summary: "CommonJS module system",
documentation: "README.md"
});

View File

@@ -9,7 +9,7 @@
Package.describe({
summary: "Adaptor for using MongoDB and Minimongo over DDP",
version: '1.16.0-beta280.5'
version: '1.16.0-beta280.7'
});
Npm.depends({

View File

@@ -3,7 +3,7 @@
Package.describe({
summary: "Wrapper around the mongo npm package",
version: "4.9.0-beta280.5",
version: "4.9.0-beta280.7",
documentation: null
});

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: 'Run tests noninteractively, with results going to the console.',
version: '1.2.4-beta280.5'
version: '1.2.4-beta280.7'
});
Package.onUse(function(api) {

View File

@@ -1,6 +1,6 @@
{
"track": "METEOR",
"version": "2.8-beta.5",
"version": "2.8-beta.7",
"recommended": false,
"official": false,
"description": "Meteor experimental release"

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
for ARGUMENT in "$@"; do
KEY=$(echo $ARGUMENT | cut -f1 -d=)
KEY_LENGTH=${#KEY}
VALUE="${ARGUMENT:$KEY_LENGTH+1}"
export "$KEY"="$VALUE"
done
echo "BRANCH_NAME = $BRANCH_NAME"
echo "VERSION = $VERSION"
git fetch origin && git checkout release/METEOR@$VERSION && git reset --hard origin/$BRANCH_NAME && git clean -df
./meteor admin make-bootstrap-tarballs --target-arch os.windows.x86_64 $VERSION win64
./meteor admin make-bootstrap-tarballs --target-arch os.linux.x86_64 $VERSION linux64
./meteor admin make-bootstrap-tarballs --target-arch os.osx.x86_64 $VERSION osx &&
./meteor admin make-bootstrap-tarballs --target-arch os.osx.arm64 $VERSION osx
./meteor aws s3 mb s3://com.meteor.static/packages-bootstrap/$VERSION/ &&
aws s3 cp --acl public-read win64/meteor-bootstrap-os.windows.x86_64.tar.gz s3://com.meteor.static/packages-bootstrap/$VERSION/ &&
aws s3 cp --acl public-read linux64/meteor-bootstrap-os.linux.x86_64.tar.gz s3://com.meteor.static/packages-bootstrap/$VERSION/ &&
aws s3 cp --acl public-read osx/meteor-bootstrap-os.osx.x86_64.tar.gz s3://com.meteor.static/packages-bootstrap/$VERSION/ &&
aws s3 cp --acl public-read osx/meteor-bootstrap-os.osx.arm64.tar.gz s3://com.meteor.static/packages-bootstrap/$VERSION/ &&
aws s3 ls s3://com.meteor.static/packages-bootstrap/$VERSION

View File

@@ -516,6 +516,8 @@ export const AVAILABLE_SKELETONS = [
"vue",
"svelte",
"tailwind",
"chakra-ui",
"solid",
];
main.registerCommand({
@@ -535,6 +537,8 @@ main.registerCommand({
apollo: { type: Boolean },
svelte: { type: Boolean },
tailwind: { type: Boolean },
'chakra-ui': { type: Boolean },
solid: { type: Boolean },
},
catalogRefresh: new catalog.Refresh.Never()
}, function (options) {
@@ -907,6 +911,8 @@ main.registerCommand({
cmd("meteor create --typescript # to create an app using TypeScript and React");
cmd("meteor create --blaze # to create an app using Blaze");
cmd("meteor create --tailwind # to create an app using React and Tailwind");
cmd("meteor create --chakra-ui # to create an app Chakra UI and React");
cmd("meteor create --solid # to create a basic Solid app");
}
Console.info("");
@@ -1258,7 +1264,7 @@ main.registerCommand({
// This option has never done anything, but we are keeping it for
// backwards compatibility since it existed for 7 years before adding
// the correctly named option
// the correctly named option
'allow-incompatible-updates': { type: Boolean }
},
catalogRefresh: new catalog.Refresh.Never()

View File

@@ -150,7 +150,7 @@ Options:
>>> create
Create a new project.
Usage: meteor create [--release <release>] [--bare|--minimal|--full|--react|--vue|--apollo|--svelte|--blaze|--tailwind] <path>
Usage: meteor create [--release <release>] [--bare|--minimal|--full|--react|--vue|--apollo|--svelte|--blaze|--tailwind|--chakra-ui|--solid] <path>
meteor create [--release <release>] --example <example_name> [<path>]
meteor create --list
meteor create --package [<package_name>]
@@ -189,6 +189,8 @@ Options:
--typescript Create a basic Typescript React-based app.
--blaze Create a basic blaze-based app.
--tailwind Create a basic react-based app, with tailwind configured.
--chakra-ui Create a basic react-based app, with chakra-ui configured.
--solid Create a basic solid-based app.
>>> update

View File

@@ -32,6 +32,14 @@ Similar to `skel`, `skel-react` is copied on `meteor create --react` command.
Similar to `skel`, `skel-tailwind` is copied on `meteor create --tailwind` command.
## skel-chakra-ui - Package Skeleton
Similar to `skel`, `skel-chakra-ui` is copied on `meteor create --chakra-ui` command.
## skel-solid - Package Skeleton
Similar to `skel`, `skel-solid` is copied on `meteor create --solid` command.
## server - Bundled App's Bootstrap
The `server` folder is copied by Isobuild when the app is bundled (on

View File

@@ -0,0 +1 @@
node_modules/

View File

@@ -0,0 +1 @@
local

View File

@@ -0,0 +1,23 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base # Packages every Meteor app needs to have
mobile-experience # Packages for a great mobile UX
mongo # The database Meteor supports right now
reactive-var # Reactive variable for tracker
standard-minifier-css # CSS minifier run for production mode
standard-minifier-js # JS minifier run for production mode
es5-shim # ECMAScript 5 compatibility for older browsers
ecmascript # Enable ECMAScript2015+ syntax in app code
typescript # Enable TypeScript syntax in .ts and .tsx modules
shell-server # Server-side component of the `meteor shell` command
hot-module-replacement # Update client in development without reloading the page
autopublish # Publish all data to the clients (for prototyping)
insecure # Allow all DB writes from clients (for prototyping)
static-html # Define static page content in .html files
react-meteor-data # React higher-order component for reactively tracking Meteor data

View File

@@ -0,0 +1,2 @@
server
browser

View File

@@ -0,0 +1,4 @@
body {
padding: 10px;
font-family: sans-serif;
}

View File

@@ -0,0 +1,7 @@
<head>
<title>~name~</title>
</head>
<body>
<div id="react-target"></div>
</body>

View File

@@ -0,0 +1,8 @@
import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import { App } from '/imports/ui/App';
Meteor.startup(() => {
render(<App/>, document.getElementById('react-target'));
});

View File

@@ -0,0 +1,3 @@
import { Mongo } from 'meteor/mongo';
export const LinksCollection = new Mongo.Collection('links');

View File

@@ -0,0 +1,24 @@
import React from 'react';
import {Hello} from './Hello.jsx';
import {Info} from './Info.jsx';
import {ChakraProvider, ColorModeScript, extendTheme, Heading} from '@chakra-ui/react';
const theme = extendTheme({
config: {
initialColorMode: 'dark',
useSystemColorMode: false,
},
});
export const App = () => {
return (
<>
<ColorModeScript initialColorMode={theme.config.initialColorMode}/>
<ChakraProvider theme={theme}>
<Heading as='h1' size='4xl'>Welcome to Meteor!</Heading>
<Hello/>
<Info/>
</ChakraProvider>
</>
);
};

View File

@@ -0,0 +1,17 @@
import React, { useState } from 'react';
import {Box, Button, Text} from "@chakra-ui/react";
export const Hello = () => {
const [counter, setCounter] = useState(0);
const increment = () => {
setCounter(counter + 1);
};
return (
<Box>
<Button variant='outline' onClick={increment}>Click Me</Button>
<Text fontSize={'xl'}>You've pressed the button {counter} times.</Text>
</Box>
);
};

View File

@@ -0,0 +1,22 @@
import React from 'react';
import { useTracker } from 'meteor/react-meteor-data';
import { LinksCollection } from '../api/links';
import {Box, Heading, Link, ListItem, UnorderedList} from "@chakra-ui/react";
import {ExternalLinkIcon} from "@chakra-ui/icons";
export const Info = () => {
const links = useTracker(() => {
return LinksCollection.find().fetch();
});
return (
<Box>
<Heading as='h2' size='3xl'>Learn Meteor!</Heading>
<UnorderedList>{links.map(
link => <ListItem key={link._id}>
<Link isExternal href={link.url} target="_blank">{link.title} <ExternalLinkIcon mx='2px' /></Link>
</ListItem>
)}</UnorderedList>
</Box>
);
};

View File

@@ -0,0 +1,29 @@
{
"name": "~name~",
"private": true,
"scripts": {
"start": "meteor run",
"test": "meteor test --once --driver-package meteortesting:mocha",
"test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha",
"visualize": "meteor --production --extra-packages bundle-visualizer"
},
"dependencies": {
"@babel/runtime": "^7.18.6",
"@chakra-ui/icons": "^1.1.7",
"@chakra-ui/react": "^1.8.8",
"@emotion/react": "^11.9.3",
"@emotion/styled": "^11.9.3",
"@react-icons/all-files": "^4.1.0",
"framer-motion": "^6.4.2",
"meteor-node-stubs": "^1.2.3",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"meteor": {
"mainModule": {
"client": "client/main.jsx",
"server": "server/main.js"
},
"testModule": "tests/main.js"
}
}

View File

@@ -0,0 +1,31 @@
import { Meteor } from 'meteor/meteor';
import { LinksCollection } from '/imports/api/links';
async function insertLink({ title, url }) {
await LinksCollection.insertAsync({ title, url, createdAt: new Date() });
}
Meteor.startup(async () => {
// If the Links collection is empty, add some data.
if (await LinksCollection.find().countAsync() === 0) {
await insertLink({
title: 'Do the Tutorial',
url: 'https://www.meteor.com/tutorials/react/creating-an-app',
});
await insertLink({
title: 'Follow the Guide',
url: 'https://guide.meteor.com',
});
await insertLink({
title: 'Read the Docs',
url: 'https://docs.meteor.com',
});
await insertLink({
title: 'Discussions',
url: 'https://forums.meteor.com',
});
}
});

View File

@@ -0,0 +1,20 @@
import assert from "assert";
describe("chakra-template", function () {
it("package.json has correct name", async function () {
const { name } = await import("../package.json");
assert.strictEqual(name, "chakra-template");
});
if (Meteor.isClient) {
it("client is not server", function () {
assert.strictEqual(Meteor.isServer, false);
});
}
if (Meteor.isServer) {
it("server is not client", function () {
assert.strictEqual(Meteor.isClient, false);
});
}
});

View File

@@ -0,0 +1 @@
node_modules/

View File

@@ -0,0 +1 @@
local

View File

@@ -0,0 +1,23 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base # Packages every Meteor app needs to have
mobile-experience # Packages for a great mobile UX
mongo # The database Meteor supports right now
reactive-var # Reactive variable for tracker
standard-minifier-css # CSS minifier run for production mode
standard-minifier-js # JS minifier run for production mode
es5-shim # ECMAScript 5 compatibility for older browsers
ecmascript # Enable ECMAScript2015+ syntax in app code
typescript # Enable TypeScript syntax in .ts and .tsx modules
shell-server # Server-side component of the `meteor shell` command
hot-module-replacement # Update client in development without reloading the page
autopublish # Publish all data to the clients (for prototyping)
insecure # Allow all DB writes from clients (for prototyping)
static-html # Define static page content in .html files
vite:bundler

View File

@@ -0,0 +1,2 @@
server
browser

View File

@@ -0,0 +1,4 @@
body {
padding: 10px;
font-family: sans-serif;
}

View File

@@ -0,0 +1,9 @@
<head>
<title>~name~</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>

View File

@@ -0,0 +1 @@
// main entry point is in imports/ui/main.jsx

View File

@@ -0,0 +1,4 @@
import { Mongo } from 'meteor/mongo';
export const LinksCollection = new Mongo.Collection('links');

View File

@@ -0,0 +1,12 @@
import { Hello } from "./Hello";
import { Info } from "./Info";
export const App = () => (
<div>
<h1>Welcome to Meteor!</h1>
<Hello/>
<Info/>
</div>
);

View File

@@ -0,0 +1,16 @@
import { createSignal } from "solid-js";
export const Hello = () => {
const [counter, setCounter] = createSignal(0);
const increment = () => {
setCounter(counter() + 1);
};
return (
<div>
<button onClick={increment}>Click Me</button>
<p>You've pressed the button {counter()} times.</p>
</div>
);
}

View File

@@ -0,0 +1,26 @@
import { LinksCollection } from "../api/links";
import { createSignal, For } from "solid-js";
import { Tracker } from "meteor/tracker";
export const Info = () => {
const [links, setLinks] = createSignal([]);
Tracker.autorun(() => {
setLinks(LinksCollection.find().fetch());
});
return (
<div>
<h2>Learn Meteor!</h2>
<ul>
<For each={links()}>{
(link) =>
<li>
<a href={link.url} target="_blank">{link.title}</a>
</li>
}</For>
</ul>
</div>
)
}

View File

@@ -0,0 +1,8 @@
/* @refresh reload */
import { render } from 'solid-js/web';
import { App } from './App';
import { Meteor } from "meteor/meteor";
Meteor.startup(() => {
render(() => <App/>, document.getElementById('root'));
})

View File

@@ -0,0 +1,28 @@
{
"name": "~name~",
"private": true,
"scripts": {
"start": "meteor run",
"test": "meteor test --once --driver-package meteortesting:mocha",
"test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha",
"visualize": "meteor --production --extra-packages bundle-visualizer"
},
"dependencies": {
"@babel/runtime": "^7.17.9",
"meteor-node-stubs": "^1.2.1",
"solid-js": "^1.5.4"
},
"meteor": {
"mainModule": {
"client": "client/main.jsx",
"server": "server/main.js"
},
"testModule": "tests/main.js"
},
"devDependencies": {
"babel-preset-solid": "^1.5.4",
"vite": "^3.0.9",
"vite-plugin-solid": "^2.3.0",
"vite-plugin-solid-svg": "^0.4.1"
}
}

View File

@@ -0,0 +1,31 @@
import { Meteor } from 'meteor/meteor';
import { LinksCollection } from '/imports/api/links';
async function insertLink({ title, url }) {
await LinksCollection.insertAsync({ title, url, createdAt: new Date() });
}
Meteor.startup(async () => {
// If the Links collection is empty, add some data.
if (await LinksCollection.find().countAsync() === 0) {
await insertLink({
title: 'Do the Tutorial',
url: 'https://www.solidjs.com/tutorial/introduction_basics',
});
await insertLink({
title: 'Follow the Guide',
url: 'https://guide.meteor.com',
});
await insertLink({
title: 'Read the Docs',
url: 'https://docs.meteor.com',
});
await insertLink({
title: 'Discussions',
url: 'https://forums.meteor.com',
});
}
});

View File

@@ -0,0 +1,20 @@
import assert from "assert";
describe("solid-template", function () {
it("package.json has correct name", async function () {
const { name } = await import("../package.json");
assert.strictEqual(name, "solid-template");
});
if (Meteor.isClient) {
it("client is not server", function () {
assert.strictEqual(Meteor.isServer, false);
});
}
if (Meteor.isServer) {
it("server is not client", function () {
assert.strictEqual(Meteor.isClient, false);
});
}
});

View File

@@ -0,0 +1,12 @@
import { defineConfig } from 'vite';
import solidPlugin from 'vite-plugin-solid';
import solidSvg from "vite-plugin-solid-svg";
export default defineConfig({
plugins: [solidPlugin(), solidSvg({
defaultExport: 'component',
})],
meteor: {
clientEntry: 'imports/ui/main.jsx',
},
});