## v3.0, 2024-07-15

### Highlights

#### Breaking Changes

- `accounts-2fa@3.0.0`:

  - Some methods are now async. See below:
  - `Accounts._is2faEnabledForUser`
  - `(Meteor Method) - generate2faActivationQrCode`
  - `(Meteor Method) - enableUser2fa`
  - `(Meteor Method) - disableUser2fa`
  - `(Meteor Method) - has2faEnabled`

- `accounts-base@3.0.0`:

  - `methods.removeOtherTokens` is now async
  - `Accounts.destroyToken` is now async
  - `Accounts.insertUserDoc` is now async
  - `Accounts.updateOrCreateUserFromExternalService` is now async
  - `Accounts.expirePasswordToken` is now async
  - `Accounts.setupUsersCollection` is now async
  - `Meteor.user` is now async in server

- `accounts-facebook@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-github@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-google@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-meetup@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-meteor-developer@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-password@3.0.0`:

  - Some server methods are now async:
  - `Accounts.sendResetPasswordEmail`
  - `Accounts.sendEnrollmentEmail`
  - `Accounts.sendVerificationEmail`
  - `Accounts.addEmail`
  - `Accounts.removeEmail`
  - `Accounts.replaceEmailAsync`
  - `Accounts.verifyEmail`
  - `Accounts.createUserVerifyingEmail`
  - `Accounts.createUser`
  - `Accounts.generateVerificationToken`
  - `Accounts.generateResetToken`
  - `Accounts.forgotPassword`
  - `Accounts.setPassword`
  - `Accounts.changePassword`
  - `Accounts.setUsername`
  - `Accounts.findUserByEmail`
  - `Accounts.findUserByUsername`

- `accounts-passwordless@3.0.0`:

  - `Accounts.sendLoginTokenEmail` is now async.

- `accounts-twitter@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-ui-unstyled@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `accounts-weibo@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `allow-deny@2.0.0`:

  - Updated to accept async functions.

- `appcache@2.0.0`:

  - Updated internal api to use `handlers`

- `audit-argument-checks@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `autopublish@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `autoupdate@2.0.0`:

  - Updated api to be async, with asyncronous queueing.

- `babel-compiler@8.0.0`:

  - Add `Babel.compileForShell`
  - Removed `Promise.await` default transform.
  - Added top-level-await to packages.

- `babel-runtime@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `base64@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `binary-heap@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `blaze@3.0.0`:
  - Todo

- `boilerplate-generator-tests@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `boilerplate-generator@2.0.0`:

  - `toHTML` is no longer available (it was already deprecated). Use `toHTMLStream` instead.
  - Updated to use `handlers`

- `browser-policy-common@2.0.0`:

  - Updated to use `handlers`

- `browser-policy-content@2.0.0`:

  - Some methods are now async. See below:
    - `BrowserPolicy.content.setPolicy`
    - `BrowserPolicy.content.allowInlineScripts`
    - `BrowserPolicy.content.disallowInlineScripts`
    - `BrowserPolicy.content.disallowAll`
    - `BrowserPolicy.setDefaultPolicy`

- `browser-policy-framing@2.0.0`:
  - Package was bumped due to a dependency update. No code changes were made.

- `browser-policy@2.0.0`:
  Updated to use async methods from `browser-policy-common` and `browser-policy-content`.

- `caching-compiler@2.0.0`:

  - `afterLink` is now async.
  - Updated to use now async API.

- `callback-hook@2.0.0`:

  - Added `forEachAsync` method.

- `check@2.0.0`:

  - Removed `fibers` related tests.

- `constraint-solver@2.0.0`:

  - Some methods are now async. See below:

    - `ConstraintSolver.getVersionCostSteps`
    - `ConstraintSolver.analyze`
    - `ConstraintSolver.resolve`

  - Updated tests to be async.
  - Removed a few underscore usage.
  - Added updated to use async methods

- `context@1.0.0`:

  - Removed `fibers` from package.

- `core-runtime@2.0.0`:

  - Created package to load packages and the app.
  - This is the pakcages that sets up the Runtime.

- `crosswalk@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ddp-client@3.0.0`:

  - Added `isAsyncCall` method to know if call is being made by an async method.
  - Removed `fibers` from package.
  - Updated tests to use async methods.
  - Now `stubPromise` is returned when calling `callAsync` or `applyAsync`.

- `ddp-common@2.0.0`:

  - Added `.fence` option.

- `ddp-rate-limiter@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ddp-server@3.0.0`:

  - Updated to use async methods.
  - Removed `fibers` from package.
  - Updated tests to use async methods.
  - Turned server implementation to async.

- `ddp@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `diff-sequence@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `disable-oplog@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ecmascript-runtime-client@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ecmascript-runtime-server@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ecmascript-runtime@1.0.0`:

  - Added dependency to `@babel/runtime`.

- `ecmascript@1.0.0`:

  - `ECMAScript.compileForShell` was removed. Use `Babel.compileForShell` from
  `babel-compiler` instead. This change makes some build plugins and apps that do not use `babel-compiler` 90mb smaller.
  - Added dependency to `@babel/runtime`.
  - Moved runtime tests.

- `ejson@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `email@3.0.0`:

  - `Email.send` is no longer available. Use `Email.sendAsync` instead.
  - Updated types to reflext async methods and `Email.send` depracation.

- `es5-shim@5.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `facebook-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `facebook-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `facts-base@2.0.0`:

  - turned unorderd deps on `ddp` to false.

- `facts-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `fetch@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `force-ssl-common@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `force-ssl@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `geojson-utils@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `github-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `github-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `google-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `google-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `hot-code-push@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `http@`:
  - Updated handlers to use `handlers`
- `id-map@2.0.0`:

  - Added `forEachAsync` method.

- `insecure@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `inter-process-messaging@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `launch-screen@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `localstorage@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `logging@2.0.0`:

  - Added dependency to `@babel/runtime`.

- `logic-solver@3.0.0`:
  `Logic.disablingAssertions` is now async.
  `minMaxWS` is now async.

- `meetup-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `meetup-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `meteor-base@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `meteor-developer-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `meteor-developer-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `meteor-tool@3.0.0`:

  - Changes to how meteor apps are being created [PR](https://github.com/meteor/meteor/pull/12697)

- `meteor@2.0.0`:

  - Async local storage was added to help deal with async methods.
  - Added `promiseEmmiter` to help with async methods.
  - Removed `fibers` from package.

- `minifier-css@2.0.0`:

  - `minifyCss` is now async.
  - Removed `fibers` from package.

- `minifier-js@3.0.0`:

  - `minifyJs` is now async.
  - `terserMinify` no longer takes callbacks
  - Removed `fibers` from package.

* `minimongo@2.0.0`:
  - `cursor.observe` now returns `isReady` and `isReadyPromise` wich indicates
    if the cursor is ready and if the callbacks are have been called.
    If you only use it in the `Client` or as a `LocalCollection` things have not
    changed.
  - `cursor.observeChangesAsync` and `cursor.observeAsync` are added and resolve as promises, returning results similar to their synchronous counterparts.

- `mobile-experience@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `mobile-status-bar@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `modern-browsers@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `modules-runtime@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `modules@1.0.0`:

  - Updated `reify` version.

- `mongo-decimal@`:

  - Updated to use `async` methods.

- `mongo-dev-server@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `mongo-id@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `mongo-livedata@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `mongo@2.0.0`:

  - Updated to unify methods, `update`,`insert`,`remove`, `fetch` are now async, they are
    the same as their `*Async` counterpart.
  - `ensureIndex` and `createIndex` are now async.
  - `observeChangesAsync` and `observeAsync` are added and resolve as promises, returning results similar to their synchronous counterparts.

- `npm-mongo@5.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `oauth-encryption@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `oauth@`:

  - `_endOfPopupResponseTemplate` and `_endOfRedirectResponseTemplate` are no longer a property but now a function that returns a promise of the same value as before
  - the following server methods are now async:
  - `OAuth._renderOauthResults`
  - `OAuth._endOfLoginResponse`
  - `OAuth.renderEndOfLoginResponse`
  - `OAuth._storePendingCredential`
  - `OAuth._retrievePendingCredential`
  - `ensureConfigured`
  - `_cleanStaleResults`

- `oauth@3.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `oauth1@`:

  - the following server methods are now async:
  - `OAuth._storeRequestToken`
  - `OAuth._retrieveRequestToken`

- `oauth1@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `oauth2@`:

  - `OAuth._requestHandlers['2']` is now async.

- `oauth2@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `ordered-dict@2.0.0`:

  - Added `forEachAsync` method.

- `package-stats-opt-out@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `package-version-parser@4.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `promise@1.0.0`:

  - Removed `fibers` usage

- `random@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `rate-limit@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `reactive-dict@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `reactive-var@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `reload-safetybelt@2.0.0`:

  - Added `ecmascript` package to `package.js`

- `reload@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `retry@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `routepolicy@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `server-render@1.0.0`:

  - Updated usage with `getBoilerplate` that are now `async`.

- `service-configuration@2.0.0`:

  - Updated to use `createIndexAsync`.

- `session@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `sha@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `shell-server@1.0.0`:

  - Updated to handle promises results.

- `socket-stream-client@1.0.0`:

  - Updated tests to handle `async` code.

- `spiderable@`:

  - Updated handlers to use `handlers` that are now using express
  - removed `fibers` usage if flag is set to `true`

- `standard-minifier-css@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `standard-minifier-js@3.0.0`:

  - `processFilesForBundle` is now `async`.

- `standard-minifiers@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `static-html@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `test-helpers@2.0.0`:

  - Updated to use `async` methods.
  - Removed `fibers` usage.
  - Added possibliy to use `async` tests.

- `test-in-browser@2.0.0`:

  - Updated css to be in dark mode.

- `test-in-console@2.0.0`:

  - Updated log identation.

- `test-server-tests-in-console-once@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `tinytest-harness@1.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `tinytest@2.0.0`:

  - Added `test name` to logs.
  - Removed `fibers` usage.

- `twitter-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `twitter-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `typescript@5.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `underscore-tests@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `underscore@2.0.0`:

  - Removed dependency in meteor package.

- `url@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `webapp-hashing@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `webapp@2.0.0`:

  - These methods are now async:

    - `WebAppInternals.reloadClientPrograms()`
    - `WebAppInternals.pauseClient()`
    - `WebAppInternals.generateClientProgram()`
    - `WebAppInternals.generateBoilerplate()`
    - `WebAppInternals.setInlineScriptsAllowed()`
    - `WebAppInternals.enableSubresourceIntegrity()`
    - `WebAppInternals.setBundledJsCssUrlRewriteHook()`
    - `WebAppInternals.setBundledJsCssPrefix()`
    - `WebAppInternals.getBoilerplate`

  - Changed engine from connect to express and changed api naming to match express. See below:
  - `WebApp.connectHandlers.use(middleware)` is now `WebApp.handlers.use(middleware)`
  - `WebApp.rawConnectHandlers.use(middleware)` is now `WebApp.rawHandlers.use(middleware)`
  - `WebApp.connectApp` is now `WebApp.expressApp`

- `weibo-config-ui@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

- `weibo-oauth@2.0.0`:

  - Package was bumped due to a dependency update. No code changes were made.

#### New Public API



- `accounts-base`: (2.9+)

  - `Meteor.userAsync()`

- `callback-hook`:forEachAsync

  - `forEachAsync`

- `ddp-server`: (2.8+)

  - `Meteor.callAsync()`

- `meteor`:
  - Added `Meteor.isDebug` to execute code in debug builds, activated with the --inspect mode.

- `minifier-css`: (2.9+)

  - `CssTools.minifyCssAsync()`

- `mongo`:

  - `Mongo.Collection`: (2.8+)
    - `createCappedCollectionAsync`
    - `createIndexAsync`
    - `dropCollectionAsync`
    - `dropIndexAsync`
    - `findOneAsync`
    - `insertAsync`
    - `removeAsync`
    - `updateAsync`
    - `upsertAsync`
  - `Collection.Cursor`: (2.8+)
    - `countAsync`
    - `fetchAsync`
    - `forEachAsync`
    - `mapAsync`
    - `[Symbol.asyncIterator]` so this code should work:
      ```js
      for await (const document of collection.find(query, options)) /* ... */
      ```

#### Internal API changes

`accounts-base`:

- `_attemptLogin`
- `_loginMethod`
- `_runLoginHandlers`

* Upgraded `node-gyp` to v9.4.0
* Upgraded `node-pre-gyp` to `@mapbox/node-pre-gyp` v1.0.11

#### New Internal API

`accounts-password`:

- `Accounts._checkPasswordAsync`

#### Special thanks to

- [@denihs](https://github.com/denihs)
- [@Grubba27](https://github.com/Grubba27)
- [@nachocodoner](https://github.com/nachocodoner)
- [@fredmaiaarantes](https://github.com/fredmaiaarantes)
- [@vit0rr](https://github.com/vit0rr)
- [@filipenevola](https://github.com/filipenevola)
- [@zodern](https://github.com/zodern)
- [@radekmie](https://github.com/radekmie)
- [@StorytellerCZ](https://github.com/StorytellerCZ)
- [@gunnartorfis](https://github.com/gunnartorfis)
- [@xet7](https://github.com/xet7)
- [@harryadel](https://github.com/harryadel)
- [@simonwebs](https://github.com/simonwebs)
- [@TylerThompson](https://github.com/TylerThompson)
- [@rodrigok](https://github.com/rodrigok)
- [@zarvox](https://github.com/zarvox)
- [@srsgores](https://github.com/srsgores)
- [@tassoevan](https://github.com/tassoevan)
- [@Torgen](https://github.com/Torgen)
- [@MarcosSpessatto](https://github.com/MarcosSpessatto)
- [@vincentcarpentier](https://github.com/vincentcarpentier)
- [@ggazzo](https://github.com/ggazzo)
- [@StevenMia](https://github.com/StevenMia)
- [@acemtp](https://github.com/acemtp)

And so many more people, for making this great framework even better!
