Full Code of feathersjs/feathers for AI

dove 9905f9fe9fa0 cached
549 files
2.8 MB
762.5k tokens
1024 symbols
1 requests
Download .txt
Showing preview only (3,037K chars total). Download the full file or copy to clipboard to get everything.
Repository: feathersjs/feathers
Branch: dove
Commit: 9905f9fe9fa0
Files: 549
Total size: 2.8 MB

Directory structure:
gitextract_xwzctsxf/

├── .eslintrc.js
├── .github/
│   ├── FUNDING.yml
│   ├── contributing.md
│   ├── issue_template.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── nodejs.yml
│       └── update-dependencies.yml
├── .gitignore
├── .mocharc.json
├── .nycrc
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── README.md
├── docs/
│   ├── .vitepress/
│   │   ├── components/
│   │   │   ├── Badges.vue
│   │   │   ├── BlockQuote.vue
│   │   │   ├── Contributors.vue
│   │   │   ├── DatabaseBlock.vue
│   │   │   ├── DatabaseSelect.vue
│   │   │   ├── FeaturesList.vue
│   │   │   ├── LanguageBlock.vue
│   │   │   ├── LanguageSelect.vue
│   │   │   ├── ListItem.vue
│   │   │   ├── Logo.vue
│   │   │   ├── Select.vue
│   │   │   ├── Tab.vue
│   │   │   ├── Tabs.vue
│   │   │   └── TeamMember.vue
│   │   ├── components.d.ts
│   │   ├── config.nav.ts
│   │   ├── config.sidebar.ts
│   │   ├── config.ts
│   │   ├── meta.ts
│   │   ├── scripts/
│   │   │   └── assets.ts
│   │   ├── style/
│   │   │   ├── element-plus.scss
│   │   │   ├── main.postcss
│   │   │   └── vars.postcss
│   │   ├── theme/
│   │   │   ├── FeathersLayout.vue
│   │   │   ├── index.ts
│   │   │   ├── pwa.ts
│   │   │   └── store.ts
│   │   └── vite-env.d.ts
│   ├── api/
│   │   ├── application.md
│   │   ├── authentication/
│   │   │   ├── client.md
│   │   │   ├── hook.md
│   │   │   ├── index.md
│   │   │   ├── jwt.md
│   │   │   ├── local.md
│   │   │   ├── oauth.md
│   │   │   ├── service.md
│   │   │   └── strategy.md
│   │   ├── channels.md
│   │   ├── client/
│   │   │   ├── rest.md
│   │   │   └── socketio.md
│   │   ├── client.md
│   │   ├── configuration.md
│   │   ├── databases/
│   │   │   ├── adapters.md
│   │   │   ├── common.md
│   │   │   ├── knex.md
│   │   │   ├── memory.md
│   │   │   ├── mongodb.md
│   │   │   └── querying.md
│   │   ├── errors.md
│   │   ├── events.md
│   │   ├── express.md
│   │   ├── hooks.md
│   │   ├── index.md
│   │   ├── koa.md
│   │   ├── schema/
│   │   │   ├── index.md
│   │   │   ├── resolvers.md
│   │   │   ├── schema.md
│   │   │   ├── typebox.md
│   │   │   └── validators.md
│   │   ├── services.md
│   │   └── socketio.md
│   ├── auto-imports.d.ts
│   ├── comparison.md
│   ├── components/
│   │   ├── CTAButton.vue
│   │   ├── Footer.vue
│   │   ├── FooterList.vue
│   │   ├── HomeCTATextSection.vue
│   │   ├── HomeCreateFirstApp.vue
│   │   ├── HomeFeature1.vue
│   │   ├── HomeFeature1Content.vue
│   │   ├── HomeFeature2.vue
│   │   ├── HomeFeature2Content.vue
│   │   ├── HomeFeatureGrid.vue
│   │   ├── HomeFeatureGridCard.vue
│   │   ├── HomeHero.vue
│   │   ├── HomeIndustryPartners.vue
│   │   └── HomeQuickStart.vue
│   ├── cookbook/
│   │   ├── authentication/
│   │   │   ├── _discord.md
│   │   │   ├── anonymous.md
│   │   │   ├── apiKey.md
│   │   │   ├── auth0.md
│   │   │   ├── facebook.md
│   │   │   ├── firebase.md
│   │   │   ├── google.md
│   │   │   ├── revoke-jwt.md
│   │   │   └── stateless.md
│   │   ├── deploy/
│   │   │   └── docker.md
│   │   ├── express/
│   │   │   ├── file-uploading.md
│   │   │   └── view-engine.md
│   │   ├── general/
│   │   │   ├── client-test.md
│   │   │   └── scaling.md
│   │   └── index.md
│   ├── ecosystem/
│   │   ├── PackageCard.vue
│   │   ├── Packages.vue
│   │   ├── helpers.ts
│   │   ├── index.md
│   │   ├── types.ts
│   │   └── useQuery.ts
│   ├── feathers-vs-firebase.md
│   ├── feathers-vs-loopback.md
│   ├── feathers-vs-meteor.md
│   ├── feathers-vs-nest.md
│   ├── feathers-vs-sails.md
│   ├── guides/
│   │   ├── basics/
│   │   │   ├── authentication.md
│   │   │   ├── generator.md
│   │   │   ├── hooks.md
│   │   │   ├── login.md
│   │   │   ├── schemas.md
│   │   │   ├── services.md
│   │   │   ├── starting.md
│   │   │   └── testing.md
│   │   ├── cli/
│   │   │   ├── app.md
│   │   │   ├── app.test.md
│   │   │   ├── authentication.md
│   │   │   ├── channels.md
│   │   │   ├── client.md
│   │   │   ├── client.test.md
│   │   │   ├── configuration.md
│   │   │   ├── custom-environment-variables.md
│   │   │   ├── databases.md
│   │   │   ├── declarations.md
│   │   │   ├── default.json.md
│   │   │   ├── hook.md
│   │   │   ├── index.md
│   │   │   ├── knexfile.md
│   │   │   ├── log-error.md
│   │   │   ├── logger.md
│   │   │   ├── package.md
│   │   │   ├── prettierrc.md
│   │   │   ├── service.class.md
│   │   │   ├── service.md
│   │   │   ├── service.schemas.md
│   │   │   ├── service.shared.md
│   │   │   ├── service.test.md
│   │   │   ├── tsconfig.md
│   │   │   └── validators.md
│   │   ├── frameworks.md
│   │   ├── frontend/
│   │   │   └── javascript.md
│   │   ├── index.md
│   │   ├── migrating.md
│   │   ├── security.md
│   │   └── whats-new.md
│   ├── help/
│   │   ├── faq.md
│   │   └── index.md
│   ├── index.md
│   ├── package.json
│   ├── public/
│   │   ├── _headers
│   │   ├── _redirects
│   │   ├── feathers-chat.css
│   │   └── robots.txt
│   ├── tsconfig.json
│   └── vite.config.ts
├── generators/
│   ├── package/
│   │   ├── index.tpl.ts
│   │   ├── license.tpl.ts
│   │   ├── package.json.tpl.ts
│   │   ├── readme.md.tpl.ts
│   │   ├── test.tpl.ts
│   │   └── tsconfig.json.tpl.ts
│   └── package.ts
├── lerna.json
├── package.json
├── packages/
│   ├── adapter-commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── declarations.ts
│   │   │   ├── index.ts
│   │   │   ├── query.ts
│   │   │   ├── service.ts
│   │   │   └── sort.ts
│   │   ├── test/
│   │   │   ├── commons.test.ts
│   │   │   ├── fixture.ts
│   │   │   ├── query.test.ts
│   │   │   ├── service.test.ts
│   │   │   └── sort.test.ts
│   │   └── tsconfig.json
│   ├── adapter-tests/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── basic.ts
│   │   │   ├── declarations.ts
│   │   │   ├── index.ts
│   │   │   ├── methods.ts
│   │   │   └── syntax.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── authentication/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authenticate.ts
│   │   │   │   ├── connection.ts
│   │   │   │   ├── event.ts
│   │   │   │   └── index.ts
│   │   │   ├── index.ts
│   │   │   ├── jwt.ts
│   │   │   ├── options.ts
│   │   │   ├── service.ts
│   │   │   └── strategy.ts
│   │   ├── test/
│   │   │   ├── core.test.ts
│   │   │   ├── fixtures.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authenticate.test.ts
│   │   │   │   └── event.test.ts
│   │   │   ├── jwt.test.ts
│   │   │   └── service.test.ts
│   │   └── tsconfig.json
│   ├── authentication-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authentication.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── populate-header.ts
│   │   │   ├── index.ts
│   │   │   └── storage.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   └── integration/
│   │   │       ├── commons.ts
│   │   │       ├── express.test.ts
│   │   │       ├── fixture.ts
│   │   │       └── socketio.test.ts
│   │   └── tsconfig.json
│   ├── authentication-local/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── hooks/
│   │   │   │   ├── hash-password.ts
│   │   │   │   └── protect.ts
│   │   │   ├── index.ts
│   │   │   └── strategy.ts
│   │   ├── test/
│   │   │   ├── fixture.ts
│   │   │   ├── hooks/
│   │   │   │   ├── hash-password.test.ts
│   │   │   │   └── protect.test.ts
│   │   │   └── strategy.test.ts
│   │   └── tsconfig.json
│   ├── authentication-oauth/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   ├── service.ts
│   │   │   ├── strategy.ts
│   │   │   └── utils.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   ├── service.test.ts
│   │   │   ├── strategy.test.ts
│   │   │   ├── utils/
│   │   │   │   ├── fixture.ts
│   │   │   │   └── provider.ts
│   │   │   └── utils.test.ts
│   │   └── tsconfig.json
│   ├── cli/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── feathers.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── cli.test.ts
│   │   └── tsconfig.json
│   ├── client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── core.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   └── feathers.ts
│   │   ├── test/
│   │   │   ├── fetch.test.ts
│   │   │   ├── fixture.ts
│   │   │   ├── socketio.test.ts
│   │   │   └── superagent.test.ts
│   │   ├── tsconfig.json
│   │   └── webpack/
│   │       ├── core.js
│   │       ├── create-config.js
│   │       └── feathers.js
│   ├── commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── debug.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── debug.test.ts
│   │   │   ├── module.test.ts
│   │   │   └── utils.test.ts
│   │   └── tsconfig.json
│   ├── configuration/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── config/
│   │   │   │   └── default.json
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── create-feathers/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── create-feathers.js
│   │   └── package.json
│   ├── errors/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── express/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── 401.html
│   │   │   ├── 404.html
│   │   │   └── default.html
│   │   ├── src/
│   │   │   ├── authentication.ts
│   │   │   ├── declarations.ts
│   │   │   ├── handlers.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   ├── test/
│   │   │   ├── authentication.test.ts
│   │   │   ├── error-handler.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── not-found-handler.test.ts
│   │   │   └── rest.test.ts
│   │   └── tsconfig.json
│   ├── feathers/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── application.ts
│   │   │   ├── declarations.ts
│   │   │   ├── events.ts
│   │   │   ├── hooks.ts
│   │   │   ├── index.ts
│   │   │   ├── service.ts
│   │   │   └── version.ts
│   │   ├── test/
│   │   │   ├── application.test.ts
│   │   │   ├── declarations.test.ts
│   │   │   ├── events.test.ts
│   │   │   └── hooks/
│   │   │       ├── after.test.ts
│   │   │       ├── app.test.ts
│   │   │       ├── around.test.ts
│   │   │       ├── before.test.ts
│   │   │       ├── error.test.ts
│   │   │       └── hooks.test.ts
│   │   └── tsconfig.json
│   ├── generators/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── app.test.tpl.ts
│   │   │   │       ├── app.tpl.ts
│   │   │   │       ├── channels.tpl.ts
│   │   │   │       ├── client.test.tpl.ts
│   │   │   │       ├── client.tpl.ts
│   │   │   │       ├── configuration.tpl.ts
│   │   │   │       ├── declarations.tpl.ts
│   │   │   │       ├── gitignore.tpl.ts
│   │   │   │       ├── index.html.tpl.ts
│   │   │   │       ├── index.tpl.ts
│   │   │   │       ├── logger.tpl.ts
│   │   │   │       ├── package.json.tpl.ts
│   │   │   │       ├── prettierrc.tpl.ts
│   │   │   │       ├── readme.md.tpl.ts
│   │   │   │       ├── services.tpl.ts
│   │   │   │       ├── tsconfig.json.tpl.ts
│   │   │   │       └── validators.tpl.ts
│   │   │   ├── authentication/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── authentication.tpl.ts
│   │   │   │       ├── client.test.tpl.ts
│   │   │   │       ├── config.tpl.ts
│   │   │   │       └── declarations.tpl.ts
│   │   │   ├── commons.ts
│   │   │   ├── connection/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── knex.tpl.ts
│   │   │   │       └── mongodb.tpl.ts
│   │   │   ├── hook/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       └── hook.tpl.ts
│   │   │   ├── index.ts
│   │   │   └── service/
│   │   │       ├── index.ts
│   │   │       ├── templates/
│   │   │       │   ├── client.tpl.ts
│   │   │       │   ├── schema.json.tpl.ts
│   │   │       │   ├── schema.typebox.tpl.ts
│   │   │       │   ├── service.tpl.ts
│   │   │       │   ├── shared.tpl.ts
│   │   │       │   └── test.tpl.ts
│   │   │       └── type/
│   │   │           ├── custom.tpl.ts
│   │   │           ├── knex.tpl.ts
│   │   │           └── mongodb.tpl.ts
│   │   ├── test/
│   │   │   ├── build/
│   │   │   │   └── .gitkeep
│   │   │   ├── commons.test.ts
│   │   │   ├── generators.test.ts
│   │   │   └── utils.ts
│   │   └── tsconfig.json
│   ├── knex/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter.ts
│   │   │   ├── declarations.ts
│   │   │   ├── error-handler.ts
│   │   │   ├── hooks.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── connection.ts
│   │   │   ├── error-handler.test.ts
│   │   │   ├── index.test.ts
│   │   │   └── overrides.test.ts
│   │   └── tsconfig.json
│   ├── koa/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── authentication.ts
│   │   │   ├── declarations.ts
│   │   │   ├── handlers.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   ├── test/
│   │   │   ├── app.fixture.ts
│   │   │   ├── authentication.test.ts
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── memory/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── mongodb/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter.ts
│   │   │   ├── converters.ts
│   │   │   ├── error-handler.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── converters.test.ts
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── rest-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── axios.ts
│   │   │   ├── base.ts
│   │   │   ├── fetch.ts
│   │   │   ├── index.ts
│   │   │   └── superagent.ts
│   │   ├── test/
│   │   │   ├── axios.test.ts
│   │   │   ├── declarations.ts
│   │   │   ├── fetch.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── server.ts
│   │   │   └── superagent.test.ts
│   │   └── tsconfig.json
│   ├── schema/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── default-schemas.ts
│   │   │   ├── hooks/
│   │   │   │   ├── index.ts
│   │   │   │   ├── resolve.ts
│   │   │   │   └── validate.ts
│   │   │   ├── index.ts
│   │   │   ├── json-schema.ts
│   │   │   ├── resolver.ts
│   │   │   └── schema.ts
│   │   ├── test/
│   │   │   ├── fixture.ts
│   │   │   ├── hooks.test.ts
│   │   │   ├── json-schema.test.ts
│   │   │   ├── resolver.test.ts
│   │   │   └── schema.test.ts
│   │   └── tsconfig.json
│   ├── socketio/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   └── middleware.ts
│   │   ├── test/
│   │   │   ├── events.ts
│   │   │   ├── index.test.ts
│   │   │   └── methods.ts
│   │   └── tsconfig.json
│   ├── socketio-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   └── server.ts
│   │   └── tsconfig.json
│   ├── tests/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── resources/
│   │   │   ├── certificate.pem
│   │   │   └── privatekey.pem
│   │   ├── src/
│   │   │   ├── client.ts
│   │   │   ├── fixture.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   └── tsconfig.json
│   ├── transport-commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── client.d.ts
│   │   ├── client.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── channels/
│   │   │   │   ├── channel/
│   │   │   │   │   ├── base.ts
│   │   │   │   │   └── combined.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── mixins.ts
│   │   │   ├── client.ts
│   │   │   ├── http.ts
│   │   │   ├── index.ts
│   │   │   ├── routing/
│   │   │   │   ├── index.ts
│   │   │   │   └── router.ts
│   │   │   └── socket/
│   │   │       ├── index.ts
│   │   │       └── utils.ts
│   │   ├── test/
│   │   │   ├── channels/
│   │   │   │   ├── channel.test.ts
│   │   │   │   ├── dispatch.test.ts
│   │   │   │   └── index.test.ts
│   │   │   ├── client.test.ts
│   │   │   ├── http.test.ts
│   │   │   ├── routing/
│   │   │   │   ├── index.test.ts
│   │   │   │   └── router.test.ts
│   │   │   └── socket/
│   │   │       ├── index.test.ts
│   │   │       └── utils.test.ts
│   │   └── tsconfig.json
│   └── typebox/
│       ├── CHANGELOG.md
│       ├── LICENSE
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── default-schemas.ts
│       │   └── index.ts
│       ├── test/
│       │   └── index.test.ts
│       └── tsconfig.json
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .eslintrc.js
================================================
module.exports = {
    "env": {
        "browser": true,
        "es6": true,
        "mocha": true,
        "node": true
    },
    "extends": [
        "plugin:@typescript-eslint/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "tsconfig.json",
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint",
        "prettier"
    ],
    "ignorePatterns": ["**/lib/", "**/dist/"],
    "rules": {
        "prettier/prettier": "error",
        "@typescript-eslint/no-explicit-any": "off",
        "@typescript-eslint/no-unused-vars": [
            "warn", // or "error"
            { 
                "argsIgnorePattern": "^_",
                "varsIgnorePattern": "^_",
                "caughtErrorsIgnorePattern": "^_",
                "ignoreRestSiblings": true
            }
        ]
    }
};


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [daffl, marshallswain]
patreon: # Replace with a single Patreon username
open_collective: #
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
custom: # Replace with a single custom sponsorship URL


================================================
FILE: .github/contributing.md
================================================
# Contributing to Feathers

Thank you for contributing to Feathers! :heart: :tada:

Feathers embraces modularity and is broken up across multiple modules. You can find them all in the `packages/` folder. Most reflect their name on npm. For example, the code for `@feathersjs/feathers` will be in `packages/feathers`, for `@feathersjs/authentication` in `packages/authenticaiton`.

## Report a bug

Before creating an issue please make sure you have checked out the docs, specifically the [FAQ](https://docs.feathersjs.com/help/faq.html) section. You might want to also try searching Github. It's pretty likely someone has already asked a similar question.

If you haven't found your answer please feel free to join our [Discord server](https://discord.gg/qa8kez8QBx), create an issue on Github, or post on [Stackoverflow](http://stackoverflow.com) using the `feathersjs` tag. We try our best to monitor Stackoverflow but you're likely to get more immediate responses in Discord and Github.

Issues can be reported in the [issue tracker](https://github.com/feathersjs/feathers/issues). Since feathers combines many modules it can be hard for us to assess the root cause without knowing which modules are being used and what your configuration looks like, so **it helps us immensely if you can link to a simple example that reproduces your issue**.

## Report a Security Concern

We take security very seriously at Feathers. We welcome any peer review of our 100% open source code to ensure nobody's Feathers app is ever compromised or hacked. As a web application developer you are responsible for any security breaches. We do our very best to make sure Feathers is as secure as possible by default.

In order to give the community time to respond and upgrade we strongly urge you report all security issues to us. Send one of the core team members a PM in [Discord](https://discord.gg/qa8kez8QBx) or email us at <a href="mailto:">hello@feathersjs.com</a> with details and we will respond ASAP.

For full details refer to our [Security docs](https://docs.feathersjs.com/SECURITY.html).

## Pull Requests

We :heart: pull requests and we're continually working to make it as easy as possible for people to contribute.

We prefer small pull requests with minimal code changes. The smaller they are the easier they are to review and merge. A FeathersJS maintainer will pick up your PR and review it as soon as they can. They may ask for changes or reject your pull request. This is not a reflection of you as an engineer or a person. Please accept feedback graciously as we will also try to be sensitive when providing it.

Although we generally accept many PRs they can be rejected for many reasons. We will be as transparent as possible but it may simply be that you do not have the same context, historical knowledge or information regarding the roadmap that the maintainers have. We value the time you take to put together any contributions so we pledge to always be respectful of that time and will try to be as open as possible so that you don't waste it. :smile:

**All PRs (except documentation) should be accompanied with tests and pass the linting rules.**

### Code style

Before running the tests from the `test/` folder `npm test` will run ESlint. You can check your code changes individually by running `npm run lint`.

### Tests

[Mocha](http://mochajs.org/) tests are located in the `test/` folder and can be run using the `npm run mocha` or `npm test` (with ESLint and code coverage) command.

### Documentation

Feathers documentation is contained in Markdown files in the [docs folder](https://github.com/feathersjs/feathers) of the main repository. To change the documentation submit a pull request to that repo, referencing any other PR if applicable, and the docs will be updated as soon as it is merged.

## Community Contributions

If you've written something awesome about Feathers, for the Feathers ecosystem, or created an app using Feathers please add it to the [awesome-feathersjs](https://github.com/feathersjs-ecosystem/awesome-feathersjs).

If you think your module would be a good core `feathersjs` module or [featherjs-ecosystem](https://github.com/feathersjs-ecosystem) module then please contact one of the Feathers maintainers on [Discord](https://discord.gg/qa8kez8QBx) and we can discuss whether it belongs and how to get it there. :beers:

## Contributor Code of Conduct

As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.

Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)


================================================
FILE: .github/issue_template.md
================================================
### Steps to reproduce

(First please check that this issue is not already solved as [described
here](https://github.com/feathersjs/feathers/blob/dove/.github/contributing.md#report-a-bug) - if it is a general question or suggestion please start a [Discussion](https://github.com/feathersjs/feathers/discussions))

- [ ] Tell us what broke. The more detailed the better.
- [ ] If you can, please create a simple example that reproduces the issue and link to a gist, jrepo, etc. This makes it much easier for us to debug and issues that have a reproducible example will get higher priority.

### Expected behavior

Tell us what should happen

### Actual behavior

Tell us what happens instead

### System configuration

Tell us about the applicable parts of your setup.

**Module versions** (especially the part that's not working):

**NodeJS version**:

**Operating System**:

**Browser Version**:

**React Native Version**:

**Module Loader**:


================================================
FILE: .github/pull_request_template.md
================================================
### Summary

(If you have not already please refer to the contributing guideline as [described
here](https://github.com/feathersjs/feathers/blob/dove/.github/contributing.md#pull-requests))

- [ ] Tell us about the problem your pull request is solving.
- [ ] Are there any open issues that are related to this?
- [ ] Is this PR dependent on PRs in other repos?

If so, please mention them to keep the conversations linked together.

### Other Information

If there's anything else that's important and relevant to your pull
request, mention that information here. This could include
benchmarks, or other information.

Your PR will be reviewed by a core team member and they will work with you to get your changes merged in a timely manner. If merged your PR will automatically be added to the changelog in the next release.

If this is a new feature, please remember to add the appropriate documentation in their respective pages in the `docs` folder.

Thanks for contributing to Feathers! :heart:


================================================
FILE: .github/workflows/nodejs.yml
================================================
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [20.x, 22.x]

    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_DB: feathers
          POSTGRES_PASSWORD: postgres
          POSTGRES_PORT: 5432
          POSTGRES_USER: postgres
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm install
      - run: npm test
        env:
          CI: true
          TEST_DB: postgres


================================================
FILE: .github/workflows/update-dependencies.yml
================================================
name: Update dependencies

on:
  schedule:
    - cron: '0 0 1 * *'
  workflow_dispatch:
jobs:
  update-dependencies:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '18.x'
      - run: npm ci
      - run: |
          git config user.name "GitHub Actions Bot"
          git config user.email "hello@feathersjs.com"
          git checkout -b update-dependencies-$GITHUB_RUN_ID
      - run: |
          npm run update-dependencies
          npm install
      - run: |
          git commit -am "chore(dependencies): Update dependencies"
          git push origin update-dependencies-$GITHUB_RUN_ID
      - run: |
          gh pr create --title "chore(dependencies): Update all dependencies" --body ""
        env:
          GITHUB_TOKEN: ${{secrets.CI_ACCESS_TOKEN}}


================================================
FILE: .gitignore
================================================
.DS_Store

# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# Commenting this out is preferred by some people, see
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
node_modules
.nyc_output

# Users Environment Variables
.lock-wscript

# IDEs
.idea

# Distributables
dist/
.nyc_output/
.cache

# TypeScript compiled files
packages/**/lib
**/build/*.tgz
*.sqlite
docs/.vitepress/cache

================================================
FILE: .mocharc.json
================================================
{
  "timeout": 30000,
  "require": ["ts-node/register", "source-map-support/register"],
  "reporter": "Dot",
  "extension": ".test.ts",
  "exit": true
}


================================================
FILE: .nycrc
================================================
{
  "verbose": false,
  "tempDirectory": "./coverage/.tmp",
  "semistandard": {
    "env": [
      "mocha"
    ]
  },
  "extension": [
    ".ts",
    ".tsx",
    ".js"
  ],
  "exclude": [
    "**/test/*",
    "**/dist/*",
    "**/*.dist.js",
    "**/_templates/*",
    "**/tests/*",
    "**/adapter-tests/*"
  ],
  "print": "detail",
  "reporter": [
    "html",
    "text",
    "text-summary",
    "lcov"
  ],
  "watermarks": {
    "statements": [
      70,
      90
    ],
    "lines": [
      70,
      90
    ],
    "functions": [
      70,
      90
    ],
    "branches": [
      70,
      90
    ]
  }
}


================================================
FILE: .prettierrc
================================================
{
  "tabWidth": 2,
  "useTabs": false,
  "printWidth": 110,
  "semi": false,
  "trailingComma": "none",
  "singleQuote": true
}

================================================
FILE: CHANGELOG.md
================================================
# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [5.0.42](https://github.com/feathersjs/feathers/compare/v5.0.41...v5.0.42) (2026-03-04)

### Bug Fixes

- **authentication-oauth:** Fix OAuth Callback Account Takeover ([#3663](https://github.com/feathersjs/feathers/issues/3663)) ([d6b0b5c](https://github.com/feathersjs/feathers/commit/d6b0b5cfbaf6f86a63662027c25616c28e54ede1))
- **mongodb:** Ensure arbitrary objects can't be passed as MongoDB ids ([#3664](https://github.com/feathersjs/feathers/issues/3664)) ([163e664](https://github.com/feathersjs/feathers/commit/163e664f231a57041034c852b80525fc5c8cf68d))
- Update dependencies ([#3666](https://github.com/feathersjs/feathers/issues/3666)) ([477bf45](https://github.com/feathersjs/feathers/commit/477bf45f9c9dbde77a14a07828aa02300de23ae7))

## [5.0.41](https://github.com/feathersjs/feathers/compare/v5.0.40...v5.0.41) (2026-02-19)

### Bug Fixes

- **client:** Ensure all client methods require valid ids ([#3661](https://github.com/feathersjs/feathers/issues/3661)) ([bc754d3](https://github.com/feathersjs/feathers/commit/bc754d3666b059b9d93799602dac427cb419ddc6))

## [5.0.40](https://github.com/feathersjs/feathers/compare/v5.0.39...v5.0.40) (2026-02-03)

### Bug Fixes

- **oauth:** Patch open redirect and origin validation ([#3653](https://github.com/feathersjs/feathers/issues/3653)) ([ee19a0a](https://github.com/feathersjs/feathers/commit/ee19a0ae9bc2ebf23b1fe598a1f7361981b65401))

## [5.0.39](https://github.com/feathersjs/feathers/compare/v5.0.38...v5.0.39) (2026-01-31)

**Note:** Version bump only for package @feathersjs/feathers

## [5.0.38](https://github.com/feathersjs/feathers/compare/v5.0.37...v5.0.38) (2026-01-31)

**Note:** Version bump only for package @feathersjs/feathers

## [5.0.37](https://github.com/feathersjs/feathers/compare/v5.0.36...v5.0.37) (2025-11-10)

### Bug Fixes

- Revert to compatible UUID package ([#3630](https://github.com/feathersjs/feathers/issues/3630)) ([5c8c9e3](https://github.com/feathersjs/feathers/commit/5c8c9e36efbbf695eccd6d8822e36e1ea75c1516))

## [5.0.36](https://github.com/feathersjs/feathers/compare/v5.0.35...v5.0.36) (2025-11-08)

### Bug Fixes

- @feathersjs/memory update with query ([#3617](https://github.com/feathersjs/feathers/issues/3617)) ([4c6caa2](https://github.com/feathersjs/feathers/commit/4c6caa27e9af1312718d0c233a0c35f7739ac553))
- **dependencies:** Update all dependencies ([#3625](https://github.com/feathersjs/feathers/issues/3625)) ([2698e4e](https://github.com/feathersjs/feathers/commit/2698e4e2996fbf479d82435938d907bc3d5b583a))
- **generators:** typebox generated schema resolver generic ([#3622](https://github.com/feathersjs/feathers/issues/3622)) ([55a4a9b](https://github.com/feathersjs/feathers/commit/55a4a9b6bb021c369fb65b50fa13869311587c3f))

## [5.0.35](https://github.com/feathersjs/feathers/compare/v5.0.34...v5.0.35) (2025-09-09)

### Bug Fixes

- Update all dependencies ([#3613](https://github.com/feathersjs/feathers/issues/3613)) ([5136bbd](https://github.com/feathersjs/feathers/commit/5136bbd2e2eeb4e6579e07c9e914006629542363))

## [5.0.34](https://github.com/feathersjs/feathers/compare/v5.0.33...v5.0.34) (2025-05-03)

### Bug Fixes

- **knex:** Add support for extended operators in query builder ([#3578](https://github.com/feathersjs/feathers/issues/3578)) ([c355ae3](https://github.com/feathersjs/feathers/commit/c355ae3184f07b15b4a313aa64fb9e7fdd0524d5))
- Update dependencies ([#3584](https://github.com/feathersjs/feathers/issues/3584)) ([119fa4e](https://github.com/feathersjs/feathers/commit/119fa4e1ade8b0078aa235083d566e2538b3a084))

## [5.0.33](https://github.com/feathersjs/feathers/compare/v5.0.32...v5.0.33) (2025-02-24)

### Bug Fixes

- **dependencies:** Update dependencies ([#3571](https://github.com/feathersjs/feathers/issues/3571)) ([ad611cb](https://github.com/feathersjs/feathers/commit/ad611cb6ffb1dc31d603ba5817331318c5a23217))
- **knex:** Add tableOptions parameter for inheritance on knex adapter options to pass on knex builder ([#3539](https://github.com/feathersjs/feathers/issues/3539)) ([ba5621b](https://github.com/feathersjs/feathers/commit/ba5621bfe5e7ab01189b6b7bccb00891bc2b14c7))

## [5.0.32](https://github.com/feathersjs/feathers/compare/v5.0.31...v5.0.32) (2025-02-01)

### Bug Fixes

- **generators:** Add FeathersGeneratorError ([#3556](https://github.com/feathersjs/feathers/issues/3556)) ([2a81a20](https://github.com/feathersjs/feathers/commit/2a81a204eb55c95d20fc45bf091c0131eff5a25d))

## [5.0.31](https://github.com/feathersjs/feathers/compare/v5.0.30...v5.0.31) (2024-10-31)

### Bug Fixes

- **dependencies:** Update all dependencies ([#3545](https://github.com/feathersjs/feathers/issues/3545)) ([221b92b](https://github.com/feathersjs/feathers/commit/221b92bb0ee5d54fb1036742968797cb02e56da2))
- **express:** Update express to version 4.21.1 ([#3543](https://github.com/feathersjs/feathers/issues/3543)) ([56d6151](https://github.com/feathersjs/feathers/commit/56d6151624f083d6604e76746cf555ed846b6d40))
- **mongodb:** Fix mongo count ([#3541](https://github.com/feathersjs/feathers/issues/3541)) ([3e95c7d](https://github.com/feathersjs/feathers/commit/3e95c7df6ae7de6a3a406dfb61dd044ea905456f))

## [5.0.30](https://github.com/feathersjs/feathers/compare/v5.0.29...v5.0.30) (2024-09-02)

### Bug Fixes

- **knex:** use driver name to identify client ([#3527](https://github.com/feathersjs/feathers/issues/3527)) ([bb075ec](https://github.com/feathersjs/feathers/commit/bb075ec8beb3ac9b0a1a8aebc3c3756d970cc6a4))

## [5.0.29](https://github.com/feathersjs/feathers/compare/v5.0.28...v5.0.29) (2024-07-10)

### Bug Fixes

- **generators:** Fix generating of gitignore ([#3514](https://github.com/feathersjs/feathers/issues/3514)) ([cabc397](https://github.com/feathersjs/feathers/commit/cabc397d2e4378c4bce79a60f2d196713cce4d8c))

## [5.0.28](https://github.com/feathersjs/feathers/compare/v5.0.27...v5.0.28) (2024-07-10)

### Bug Fixes

- Fix update-dependencies task ([49b9f70](https://github.com/feathersjs/feathers/commit/49b9f70aba1084aa184d9b83c5a8249b793e6a1a))
- **transport-commons:** Fix HTTP status precedence ([#3511](https://github.com/feathersjs/feathers/issues/3511)) ([5d999a0](https://github.com/feathersjs/feathers/commit/5d999a0acddc0cb7692058209dfbc62673ab5a69))

## [5.0.27](https://github.com/feathersjs/feathers/compare/v5.0.26...v5.0.27) (2024-06-18)

### Bug Fixes

- **authentication-oauth:** Allow POST oauth callbacks ([#3497](https://github.com/feathersjs/feathers/issues/3497)) ([ffcc90b](https://github.com/feathersjs/feathers/commit/ffcc90bb95329cbb4b8f310e37024d417c216d8c))

## [5.0.26](https://github.com/feathersjs/feathers/compare/v5.0.25...v5.0.26) (2024-06-09)

### Bug Fixes

- **adapter-commons:** Faster sorter ([#3495](https://github.com/feathersjs/feathers/issues/3495)) ([22243e4](https://github.com/feathersjs/feathers/commit/22243e4d92edc1a7343b4cf42be6dfb22e8b86d5))
- **generators:** Fix migrate:make script in generated app ([#3490](https://github.com/feathersjs/feathers/issues/3490)) ([c7b0111](https://github.com/feathersjs/feathers/commit/c7b011150152e62a35f3f8ab04d6dde6d6727583))
- **mongodb:** Added Update Method Prototype to MongoDBService Class ([#3494](https://github.com/feathersjs/feathers/issues/3494)) ([428f23a](https://github.com/feathersjs/feathers/commit/428f23a8c622cd8bc4d06253206aadd514267846))
- **mongodb:** MongoDB Aggregation improvements ([#3366](https://github.com/feathersjs/feathers/issues/3366)) ([f2829b1](https://github.com/feathersjs/feathers/commit/f2829b1f8e33d13caae3557d37225d990467fb39))
- **schema:** Allow regular functions in resolvers ([#3487](https://github.com/feathersjs/feathers/issues/3487)) ([187868e](https://github.com/feathersjs/feathers/commit/187868edd9c0c9d885c482b85be7a90655c86ca2))
- **typebox:** Add TRecord to getValidator arg1 type ([#3488](https://github.com/feathersjs/feathers/issues/3488)) ([ffbcc0a](https://github.com/feathersjs/feathers/commit/ffbcc0ad0c361f77171f9ad6224006727644433a))

## [5.0.25](https://github.com/feathersjs/feathers/compare/v5.0.24...v5.0.25) (2024-05-03)

### Bug Fixes

- **generators:** better types for enabled methods ([#3474](https://github.com/feathersjs/feathers/issues/3474)) ([bdb3d3a](https://github.com/feathersjs/feathers/commit/bdb3d3a308322bfed3caa4214e4b6a72f1a84944))
- **knex:** Update committed to boolean type ([#3458](https://github.com/feathersjs/feathers/issues/3458)) ([5fa4dbc](https://github.com/feathersjs/feathers/commit/5fa4dbc06d0126ac18f5643562d0b74f03502caa))
- **oauth:** Export OAuthService type ([#3479](https://github.com/feathersjs/feathers/issues/3479)) ([e7185cd](https://github.com/feathersjs/feathers/commit/e7185cde63990a0d24a7180c63b61dbc8ef6cd5b))
- Reduce usage of lodash ([#3455](https://github.com/feathersjs/feathers/issues/3455)) ([8ce807a](https://github.com/feathersjs/feathers/commit/8ce807a5ca53ff5b8d5107a0656c6329404e6e6c))

## [5.0.24](https://github.com/feathersjs/feathers/compare/v5.0.23...v5.0.24) (2024-03-13)

### Bug Fixes

- **generators:** Use module format for JS Knex migrations ([#3444](https://github.com/feathersjs/feathers/issues/3444)) ([3feaa71](https://github.com/feathersjs/feathers/commit/3feaa719443aa30b1121d928ba5b7b8f43837ffb))
- **socketio:** Handle ackTimeout of socket.io ([#3437](https://github.com/feathersjs/feathers/issues/3437)) ([2642072](https://github.com/feathersjs/feathers/commit/26420721f3eb16f716a9e68ab3ed9f415bab7a9c))

## [5.0.23](https://github.com/feathersjs/feathers/compare/v5.0.22...v5.0.23) (2024-02-25)

### Bug Fixes

- **core:** Update to latest feathersjs/hooks ([#3434](https://github.com/feathersjs/feathers/issues/3434)) ([1499ccc](https://github.com/feathersjs/feathers/commit/1499ccc41fb3ebba97b2c84e0cb19bc48ad3c651))
- **transport-commons:** Properly delete route data ([#3433](https://github.com/feathersjs/feathers/issues/3433)) ([af01bdb](https://github.com/feathersjs/feathers/commit/af01bdbe050dd428d6fffefa1874e9a6e4182bad))

## [5.0.22](https://github.com/feathersjs/feathers/compare/v5.0.21...v5.0.22) (2024-02-15)

### Bug Fixes

- **knex:** Fix Knex adapter date comparison queries ([#3429](https://github.com/feathersjs/feathers/issues/3429)) ([23bafe1](https://github.com/feathersjs/feathers/commit/23bafe1204f79ce2ab0eaaa5544fab1a3ffb5f41))

## [5.0.21](https://github.com/feathersjs/feathers/compare/v5.0.20...v5.0.21) (2024-01-25)

**Note:** Version bump only for package feathers

## [5.0.20](https://github.com/feathersjs/feathers/compare/v5.0.19...v5.0.20) (2024-01-24)

### Bug Fixes

- **generators:** Use cross-platform ES module \_\_dirname ([#3402](https://github.com/feathersjs/feathers/issues/3402)) ([0ac4882](https://github.com/feathersjs/feathers/commit/0ac4882663bb6a78622be0d903ae6508ecb516ad))

## [5.0.19](https://github.com/feathersjs/feathers/compare/v5.0.18...v5.0.19) (2024-01-23)

### Bug Fixes

- **cli:** Add JS extension to binaries ([#3398](https://github.com/feathersjs/feathers/issues/3398)) ([aaf181d](https://github.com/feathersjs/feathers/commit/aaf181d924d0cb67c7792a54197082c59109264d))

## [5.0.18](https://github.com/feathersjs/feathers/compare/v5.0.17...v5.0.18) (2024-01-22)

### Bug Fixes

- **cli:** Another fix for CLI ES module loading ([#3397](https://github.com/feathersjs/feathers/issues/3397)) ([3cb3bc9](https://github.com/feathersjs/feathers/commit/3cb3bc9a32602d82193b781b583ed0f37044e778))

## [5.0.17](https://github.com/feathersjs/feathers/compare/v5.0.16...v5.0.17) (2024-01-22)

### Bug Fixes

- **cli:** Fix another ES module issue ([#3395](https://github.com/feathersjs/feathers/issues/3395)) ([8e39884](https://github.com/feathersjs/feathers/commit/8e39884a23d0e7868546dce4f7a3ee6e954c2b31))

## [5.0.16](https://github.com/feathersjs/feathers/compare/v5.0.15...v5.0.16) (2024-01-22)

### Bug Fixes

- Update npm create feathers to ES module ([#3393](https://github.com/feathersjs/feathers/issues/3393)) ([314ce70](https://github.com/feathersjs/feathers/commit/314ce707332eadbea4505e5e7560397632da6205))

## [5.0.15](https://github.com/feathersjs/feathers/compare/v5.0.14...v5.0.15) (2024-01-22)

### Bug Fixes

- **generators:** Move generators and CLI to featherscloud/pinion ([#3386](https://github.com/feathersjs/feathers/issues/3386)) ([eb87c99](https://github.com/feathersjs/feathers/commit/eb87c9922db56c5610e5b808f3ffe033c830e2b2))
- **knex:** Add sqlite to returning clients ([#3389](https://github.com/feathersjs/feathers/issues/3389)) ([59fb40b](https://github.com/feathersjs/feathers/commit/59fb40b9eb34950ef2dd35b7de4762f224a171f1))

## [5.0.14](https://github.com/feathersjs/feathers/compare/v5.0.13...v5.0.14) (2024-01-05)

### Bug Fixes

- **generators:** Harden mongodb.js to reliably extract database from any connection string ([#3264](https://github.com/feathersjs/feathers/issues/3264)) ([7b0f82c](https://github.com/feathersjs/feathers/commit/7b0f82c631ff5549cdc9a8e0ffcc705d067c2157))
- **knex:** Add Error Handler to knex \_update function ([#3371](https://github.com/feathersjs/feathers/issues/3371)) ([210f103](https://github.com/feathersjs/feathers/commit/210f1037bf69c641d4fd335cd4f084cbbac0a922))
- **schema:** Fix setting dispatch on existing nested objects ([#3380](https://github.com/feathersjs/feathers/issues/3380)) ([04efd5a](https://github.com/feathersjs/feathers/commit/04efd5ab3339beafa0e1a9ef851483a387c6ec96))

## [5.0.13](https://github.com/feathersjs/feathers/compare/v5.0.12...v5.0.13) (2023-12-29)

**Note:** Version bump only for package feathers

## [5.0.12](https://github.com/feathersjs/feathers/compare/v5.0.11...v5.0.12) (2023-11-28)

### Bug Fixes

- allow \_patch to modify the entire base schema ([#3300](https://github.com/feathersjs/feathers/issues/3300)) ([0f41622](https://github.com/feathersjs/feathers/commit/0f41622307589b3a0b62ac411a73e6a601bda171))
- **authentication-client:** Allow to abort fetch ([#3310](https://github.com/feathersjs/feathers/issues/3310)) ([ff3e104](https://github.com/feathersjs/feathers/commit/ff3e104b62d02d45261a293aff4e9491241f486f))
- **express:** Re-export Router ([#3349](https://github.com/feathersjs/feathers/issues/3349)) ([0cbdb03](https://github.com/feathersjs/feathers/commit/0cbdb03a2d810f4855da9b21602c96e4fed7fce5))
- **generators:** use `export type` vs `export` ([#3246](https://github.com/feathersjs/feathers/issues/3246)) ([82d30fd](https://github.com/feathersjs/feathers/commit/82d30fd37914e61935e068e89fc389f6bf47aaad))
- **knex:** Add includeTriggerModifications for MSSQL support ([#3355](https://github.com/feathersjs/feathers/issues/3355)) ([cbe44b0](https://github.com/feathersjs/feathers/commit/cbe44b0e91506ab06c86355af67f83d5197bd896))
- **schema:** Allow $in and $nin queries to work for arrays ([#3352](https://github.com/feathersjs/feathers/issues/3352)) ([677c214](https://github.com/feathersjs/feathers/commit/677c214a353a7f9a1f90649b9bbec4d0d6517a6f))
- **schema:** Remove undefined $select when using resolveResult hook ([#3354](https://github.com/feathersjs/feathers/issues/3354)) ([c43e009](https://github.com/feathersjs/feathers/commit/c43e009188eb84f98e3f5f29ac4444e6967afc1f))
- **transport-commons:** Allow case insensitive route lookups ([#3353](https://github.com/feathersjs/feathers/issues/3353)) ([a4a5ab6](https://github.com/feathersjs/feathers/commit/a4a5ab6cb59048176292cd71c04a32aa71ac4642))

## [5.0.11](https://github.com/feathersjs/feathers/compare/v5.0.10...v5.0.11) (2023-10-11)

### Bug Fixes

- **client:** Replace placeholders in URL with route params ([#3270](https://github.com/feathersjs/feathers/issues/3270)) ([a0624eb](https://github.com/feathersjs/feathers/commit/a0624eb5a7919aa1b179a71beb1c1b9cab574525))
- **core:** context.path is now typed correctly ([#3303](https://github.com/feathersjs/feathers/issues/3303)) ([ff18b3f](https://github.com/feathersjs/feathers/commit/ff18b3f8b7c8dbc97be588f699d539226785343a))
- **knex:** Update all dependencies and Knex peer ([#3308](https://github.com/feathersjs/feathers/issues/3308)) ([d2f9860](https://github.com/feathersjs/feathers/commit/d2f986036c4741cce2339d8abbcc6b2eb037a12a))
- **memory:** Ensure correct pagination totals ([#3307](https://github.com/feathersjs/feathers/issues/3307)) ([c59e1b8](https://github.com/feathersjs/feathers/commit/c59e1b80cb43571077b035ab2bf0b44f9daa5ab8))
- **schema:** HookContext is now typed in schema ([#3306](https://github.com/feathersjs/feathers/issues/3306)) ([65fab86](https://github.com/feathersjs/feathers/commit/65fab86407b813122f24db928a59986c7286f270))

## [5.0.10](https://github.com/feathersjs/feathers/compare/v5.0.9...v5.0.10) (2023-10-03)

### Bug Fixes

- **authentication-oauth:** Move Grant error handling to the correct spot ([#3297](https://github.com/feathersjs/feathers/issues/3297)) ([e9c0828](https://github.com/feathersjs/feathers/commit/e9c0828937453c3f0a1bd16010089b825185eab6))
- **schema:** Add typescript as peerDependency ([#3287](https://github.com/feathersjs/feathers/issues/3287)) ([cb562ee](https://github.com/feathersjs/feathers/commit/cb562eeddfa88e34fe5727d4000fa037746b0249))
- **typebox:** Allow default value in StringEnum ([#3281](https://github.com/feathersjs/feathers/issues/3281)) ([25af09a](https://github.com/feathersjs/feathers/commit/25af09ad065e72768bf88bc8b529b68f2ca4da17))

## [5.0.9](https://github.com/feathersjs/feathers/compare/v5.0.8...v5.0.9) (2023-09-27)

### Bug Fixes

- **authentication-oauth:** Properly handle all oAuth errors ([#3284](https://github.com/feathersjs/feathers/issues/3284)) ([148a9a3](https://github.com/feathersjs/feathers/commit/148a9a319b8e29138fda82d6c03bb489a7b4a6e1))
- **client:** Add underscored methods to clients ([#3176](https://github.com/feathersjs/feathers/issues/3176)) ([f3c01f7](https://github.com/feathersjs/feathers/commit/f3c01f7b8266bfc642c55b77ba8e5bb333542630))
- **generators:** Fix configure channels when not real-time app ([#3271](https://github.com/feathersjs/feathers/issues/3271)) ([c619ab2](https://github.com/feathersjs/feathers/commit/c619ab2c57f692c419fee610c269c1502b124852))
- **typebox:** allow TUnion<TObject[]> inside getValidator ([#3262](https://github.com/feathersjs/feathers/issues/3262)) ([cf9df96](https://github.com/feathersjs/feathers/commit/cf9df96c1011fcf13e9c6d652b06036bb0aac1c3))

## [5.0.8](https://github.com/feathersjs/feathers/compare/v5.0.7...v5.0.8) (2023-07-19)

### Bug Fixes

- add missing word ([#3237](https://github.com/feathersjs/feathers/issues/3237)) ([9a32184](https://github.com/feathersjs/feathers/commit/9a321848767e31176660d6937f8fa6d83ba215bd))
- **transport-commons:** Handle invalid service paths on socket lookups ([#3241](https://github.com/feathersjs/feathers/issues/3241)) ([c397ab3](https://github.com/feathersjs/feathers/commit/c397ab3a0cd184044ae4f73540549b30a396821c))

## [5.0.7](https://github.com/feathersjs/feathers/compare/v5.0.6...v5.0.7) (2023-07-14)

### Bug Fixes

- **core:** Ensure .service does not access Object properties ([#3235](https://github.com/feathersjs/feathers/issues/3235)) ([c0b670a](https://github.com/feathersjs/feathers/commit/c0b670ac4c7bf145e36b59ea89d1387b5514c237))
- **generators:** Fix channel/service configuration order for Koa based apps ([580344e](https://github.com/feathersjs/feathers/commit/580344e96fe8a2f17fd53476af5a0c7ddefac0b6))
- **koa:** Ensure .teardown works without a server ([#3234](https://github.com/feathersjs/feathers/issues/3234)) ([818572d](https://github.com/feathersjs/feathers/commit/818572df98456bc3e1a300e879329aa8f849be64))

## [5.0.6](https://github.com/feathersjs/feathers/compare/v5.0.5...v5.0.6) (2023-06-15)

### Bug Fixes

- **authentication-client:** Do not trigger storage methods if storage not defined ([#3210](https://github.com/feathersjs/feathers/issues/3210)) ([261acbc](https://github.com/feathersjs/feathers/commit/261acbcde387db731e434cb106a27b49dcb64a9a))
- **authentication-client:** removeAccessToken throws error if storage not defined ([#3195](https://github.com/feathersjs/feathers/issues/3195)) ([b8e2769](https://github.com/feathersjs/feathers/commit/b8e27698f7958a91fe9a4ee64ec5591d23194c44))
- **authentication-local:** Local Auth - Nested username & Password fields ([#3091](https://github.com/feathersjs/feathers/issues/3091)) ([d135526](https://github.com/feathersjs/feathers/commit/d135526da18ecf2dc620b82820e1d09d8af5c0b5))
- **authentication-oauth:** Update OAuth redirect to handle user requested redirect paths ([#3186](https://github.com/feathersjs/feathers/issues/3186)) ([3742028](https://github.com/feathersjs/feathers/commit/37420283c17bb8129c6ffdde841ce2034109cc6b))
- **authentication:** Export JwtVerifyOptions ([#3214](https://github.com/feathersjs/feathers/issues/3214)) ([d59896e](https://github.com/feathersjs/feathers/commit/d59896eb0229f1490c712f19cf84eb2bcf123698))

## [5.0.5](https://github.com/feathersjs/feathers/compare/v5.0.4...v5.0.5) (2023-04-28)

### Bug Fixes

- **generators:** Add sourceMap to tsconfig.json template ([#3166](https://github.com/feathersjs/feathers/issues/3166)) ([3049b7a](https://github.com/feathersjs/feathers/commit/3049b7a425d01cdd3058442c7183307a06cfc87a))
- **mongodb:** Speed up multi create ([#3171](https://github.com/feathersjs/feathers/issues/3171)) ([e34f728](https://github.com/feathersjs/feathers/commit/e34f728139a1008503aa440f1b7cf6395719417b))
- **schema:** Exclude json-schema-to-ts@2.8.0 ([#3180](https://github.com/feathersjs/feathers/issues/3180)) ([aee8531](https://github.com/feathersjs/feathers/commit/aee8531b5f0578f11e43b19a469b96e6f4b170ce))
- **typebox:** Revert to TypeBox 0.25 ([#3183](https://github.com/feathersjs/feathers/issues/3183)) ([cacedf5](https://github.com/feathersjs/feathers/commit/cacedf59e3d2df836777f0cd06ab1b2484ed87c5))

## [5.0.4](https://github.com/feathersjs/feathers/compare/v5.0.3...v5.0.4) (2023-04-12)

### Bug Fixes

- **adapter-commons:** Support non-default import to ease use with ESM projects ([d06f2cf](https://github.com/feathersjs/feathers/commit/d06f2cfcadda7dc23f0e2bec44f64e6be8500d02))
- Make sure all Readme files are up to date ([#3154](https://github.com/feathersjs/feathers/issues/3154)) ([a5f0b38](https://github.com/feathersjs/feathers/commit/a5f0b38bbf2a11486415a39533bcc6c67fb51e3e))
- **memory:** Fix memory adapter readme ([#3153](https://github.com/feathersjs/feathers/issues/3153)) ([a9d826a](https://github.com/feathersjs/feathers/commit/a9d826a7dbe7df4501fbf82a47d2c3a77ca9e0c0))
- **typebox:** Implement custom TypeBuilder for backwards compatibility ([#3150](https://github.com/feathersjs/feathers/issues/3150)) ([962bd87](https://github.com/feathersjs/feathers/commit/962bd87217212320b1a68f6556a16b8a6b8f757c))

## [5.0.3](https://github.com/feathersjs/feathers/compare/v5.0.2...v5.0.3) (2023-04-05)

### Bug Fixes

- **authentication:** Ensure authentication.entity configuration can be null ([#3136](https://github.com/feathersjs/feathers/issues/3136)) ([c47349b](https://github.com/feathersjs/feathers/commit/c47349b9dcf2067b7b572c5463b15b2a8fbda972))
- **dependencies:** Update all dependencies ([#3139](https://github.com/feathersjs/feathers/issues/3139)) ([f24276e](https://github.com/feathersjs/feathers/commit/f24276e9a909e2e58a0730c730258ce1f70f4028))
- **generators:** Properly log unhandled rejection ([#3149](https://github.com/feathersjs/feathers/issues/3149)) ([eda8f78](https://github.com/feathersjs/feathers/commit/eda8f78fa5084c3247ad10b051610b3c51a13d24))
- **knex:** Ensure that columns are selected unambigiously and avoid duplicate id selection ([#3144](https://github.com/feathersjs/feathers/issues/3144)) ([3eb7428](https://github.com/feathersjs/feathers/commit/3eb7428f888f0e8a0fbc09f5261bff3e68a0ed63))
- **knex:** Get by id and transactions should work with params.knex ([#3146](https://github.com/feathersjs/feathers/issues/3146)) ([b172b5e](https://github.com/feathersjs/feathers/commit/b172b5ea9b461642874eb7d2ba01dc4cfc275155))
- **knex:** Only apply default order for MSSQL ([#3145](https://github.com/feathersjs/feathers/issues/3145)) ([28c2627](https://github.com/feathersjs/feathers/commit/28c26279befea6cf43cedd3af628234b170b8c91))
- **mongodb:** Add MongoDB as peerDependency ([#3148](https://github.com/feathersjs/feathers/issues/3148)) ([0137b40](https://github.com/feathersjs/feathers/commit/0137b40fb694fa95e3b7b7ad41504831b894d977))
- **typebox:** Upgrade to TypeBox 0.26.0 ([#3113](https://github.com/feathersjs/feathers/issues/3113)) ([d1d9598](https://github.com/feathersjs/feathers/commit/d1d95984dd94d2b9305e7338421f84f9c4f733fd))

## [5.0.2](https://github.com/feathersjs/feathers/compare/v5.0.1...v5.0.2) (2023-03-23)

### Bug Fixes

- **generators:** Make sure TypeScript version in generated app matches ([#3122](https://github.com/feathersjs/feathers/issues/3122)) ([f0acfdf](https://github.com/feathersjs/feathers/commit/f0acfdf9d33337bf40ca12126c2550f56e31fa3b))
- **socketio-client:** Move core dependency to the right spot ([#3117](https://github.com/feathersjs/feathers/issues/3117)) ([6cd66f1](https://github.com/feathersjs/feathers/commit/6cd66f13e4e668defb57074413846550b147a51d))

## [5.0.1](https://github.com/feathersjs/feathers/compare/v5.0.0...v5.0.1) (2023-03-15)

### Bug Fixes

- **core:** Add PaginationParams to general find method ([#3095](https://github.com/feathersjs/feathers/issues/3095)) ([8ebdcf5](https://github.com/feathersjs/feathers/commit/8ebdcf5107fae5fa23920390052b871033de3a0a))
- **core:** Use Symbol.for to instantiate shared symbols ([#3087](https://github.com/feathersjs/feathers/issues/3087)) ([7f3fc21](https://github.com/feathersjs/feathers/commit/7f3fc2167576f228f8183568eb52b077160e8d65))
- **generators:** Conditionally import channels in Express app ([#3106](https://github.com/feathersjs/feathers/issues/3106)) ([c2dbaaa](https://github.com/feathersjs/feathers/commit/c2dbaaa4d1d5a5675b5812a7ed2317076ac414fe))
- **koa:** Replace koa-bodyparser with koa-body ([#3093](https://github.com/feathersjs/feathers/issues/3093)) ([2456bf8](https://github.com/feathersjs/feathers/commit/2456bf882c99ae2cddd1a39bffba7e61217fc055))
- **memory/mongodb:** $select as only property & force 'id' in '$select' ([#3081](https://github.com/feathersjs/feathers/issues/3081)) ([fbe3cf5](https://github.com/feathersjs/feathers/commit/fbe3cf5199e102b5aeda2ae33828d5034df3d105))
- **transport-commons:** Fix dispatching of arrays ([#3075](https://github.com/feathersjs/feathers/issues/3075)) ([98fdda5](https://github.com/feathersjs/feathers/commit/98fdda53187acee88137b39662c766cc62cd7b55))

# [5.0.0](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.38...v5.0.0) (2023-02-24)

### Bug Fixes

- **generators:** Fix typo in service client generator ([#3068](https://github.com/feathersjs/feathers/issues/3068)) ([612032e](https://github.com/feathersjs/feathers/commit/612032eced24ecbcf255d51ff0d537d74227cfd7))
- **koa:** Make Koa app inspectable ([#3069](https://github.com/feathersjs/feathers/issues/3069)) ([4fbbfff](https://github.com/feathersjs/feathers/commit/4fbbfff2a3c625f8e6929e5a09e2cf7b739ffe11))

# [5.0.0-pre.38](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.37...v5.0.0-pre.38) (2023-02-17)

### Bug Fixes

- **koa:** Fix missing dependency on feathers ([#3061](https://github.com/feathersjs/feathers/issues/3061)) ([80dc95f](https://github.com/feathersjs/feathers/commit/80dc95ff85c9074b8f70e3ff71562f18863ef2be))
- **schema:** validateQuery - move next function outside of try-catch ([#3053](https://github.com/feathersjs/feathers/issues/3053)) ([37fe5c4](https://github.com/feathersjs/feathers/commit/37fe5c4a4d813867f6d02098b7c77d08786248c7))

### Features

- **generators:** Final tweaks to the generators ([#3060](https://github.com/feathersjs/feathers/issues/3060)) ([1bf1544](https://github.com/feathersjs/feathers/commit/1bf1544fa8deeaa44ba354fb539dc3f1fd187767))
- **schema:** Add schema helper for handling Object ids ([#3058](https://github.com/feathersjs/feathers/issues/3058)) ([1393bed](https://github.com/feathersjs/feathers/commit/1393bed81a9ee814de6aab0e537af83e667591a2))

# [5.0.0-pre.37](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.36...v5.0.0-pre.37) (2023-02-09)

### Bug Fixes

- **generators:** Add schema selection to CI test matrix ([#3035](https://github.com/feathersjs/feathers/issues/3035)) ([7484b16](https://github.com/feathersjs/feathers/commit/7484b164fba4ac2ee379dc5c6363f964f45e94d3))
- **generators:** Fix Knex migration generated filename ([#3033](https://github.com/feathersjs/feathers/issues/3033)) ([1ac18a7](https://github.com/feathersjs/feathers/commit/1ac18a7143173d973af982772678834f7a7334f7))
- **generators:** Generated app does not start when choosing JSON schema ([#3034](https://github.com/feathersjs/feathers/issues/3034)) ([7b8250b](https://github.com/feathersjs/feathers/commit/7b8250bd535c3c5ec7429a65139335ad43616ae0))
- **knex:** The method getModel in the knex adapter ([#3043](https://github.com/feathersjs/feathers/issues/3043)) ([77e14dd](https://github.com/feathersjs/feathers/commit/77e14dd3f4a29adff8beb805d0e6186ead59e4fe))
- **schema:** Do not change the hook context in resolvers ([#3048](https://github.com/feathersjs/feathers/issues/3048)) ([bfd8c04](https://github.com/feathersjs/feathers/commit/bfd8c04c15279063a0d4b70771715c656dda5f7c))
- **schema:** Ensure that resolveResult and resolveExternal are run as around hooks ([#3032](https://github.com/feathersjs/feathers/issues/3032)) ([71942f4](https://github.com/feathersjs/feathers/commit/71942f418e3afe167aef4f98b1a97356dae7625c))
- **typebox:** Allow nested or in and queries ([#3029](https://github.com/feathersjs/feathers/issues/3029)) ([39e0b78](https://github.com/feathersjs/feathers/commit/39e0b785238b809aa9b4dea9b95efc3c188c9baa))

### Features

- **mongodb:** Add Object ID keyword converter and update MongoDB CLI & docs ([#3041](https://github.com/feathersjs/feathers/issues/3041)) ([ca0994e](https://github.com/feathersjs/feathers/commit/ca0994eaecb5a31f310bc980d106834e11f24f41))

# [5.0.0-pre.36](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.35...v5.0.0-pre.36) (2023-01-29)

### Bug Fixes

- **authentication-oauth:** Use original headers in oauth flow ([#3025](https://github.com/feathersjs/feathers/issues/3025)) ([fb3d8cc](https://github.com/feathersjs/feathers/commit/fb3d8cca123d68a77b096bc92e49baa55424afe0))
- **configuration:** Add pool and connection object to SQL database default configuration ([#3023](https://github.com/feathersjs/feathers/issues/3023)) ([092c749](https://github.com/feathersjs/feathers/commit/092c749d43f7da4d019576d1210fe7d3719a44a2))
- **databases:** Ensure that query sanitization is not necessary when using query schemas ([#3022](https://github.com/feathersjs/feathers/issues/3022)) ([dbf514e](https://github.com/feathersjs/feathers/commit/dbf514e85d1508b95c007462a39b3cadd4ff391d))
- **databases:** Improve documentation for adapters and allow dynamic Knex adapter options ([#3019](https://github.com/feathersjs/feathers/issues/3019)) ([66c4b5e](https://github.com/feathersjs/feathers/commit/66c4b5e72000dd03acb57fca1cad4737c85c9c9e))
- **feathers:** Run after all hooks first, and then after method hooks ([#3004](https://github.com/feathersjs/feathers/issues/3004)) ([3692fd5](https://github.com/feathersjs/feathers/commit/3692fd57f70564492cef8bbaf78d264627a9bf0a))
- **generators:** Add main schema to all validators ([#2997](https://github.com/feathersjs/feathers/issues/2997)) ([5854dea](https://github.com/feathersjs/feathers/commit/5854dea7f610262121a49623ec5bbd474dcd3ef3))
- **generators:** Add TypeScript as normal instead of dev dependency ([#3011](https://github.com/feathersjs/feathers/issues/3011)) ([2f67398](https://github.com/feathersjs/feathers/commit/2f673987f38b199e75aff629b7cdfcaebfd69c4c))
- **generators:** Do not removeAdditional in queries ([#3000](https://github.com/feathersjs/feathers/issues/3000)) ([ef501bc](https://github.com/feathersjs/feathers/commit/ef501bcfa528119168787e9d857f1bb90e0c3114))
- **schema:** Allow any type in resolver hooks ([#3006](https://github.com/feathersjs/feathers/issues/3006)) ([f01281f](https://github.com/feathersjs/feathers/commit/f01281f7d83262738459585fc3f53f56c0a0deb8))
- **schema:** Ensure all types of nested data are securely dispatched ([#3005](https://github.com/feathersjs/feathers/issues/3005)) ([e4a9da5](https://github.com/feathersjs/feathers/commit/e4a9da5f3288e8e9f02087754473c7a9dfda6cb1))
- **schema:** Fix TypeBox extension value query syntax inference ([#3010](https://github.com/feathersjs/feathers/issues/3010)) ([f1c7a76](https://github.com/feathersjs/feathers/commit/f1c7a76586bbb8aed66ef866c3dcd666d79f3a24))
- Update all dependencies ([#3024](https://github.com/feathersjs/feathers/issues/3024)) ([283dc47](https://github.com/feathersjs/feathers/commit/283dc4798d85584bc031e6e54b83b4ea77d1edd0))

### Features

- **database:** Add and to the query syntax ([#3021](https://github.com/feathersjs/feathers/issues/3021)) ([00cb0d9](https://github.com/feathersjs/feathers/commit/00cb0d9c302ae951ae007d3d6ceba33e254edd9c))
- **generators:** Add service file for shared information ([#3008](https://github.com/feathersjs/feathers/issues/3008)) ([0a1665d](https://github.com/feathersjs/feathers/commit/0a1665d23e002afadb40ed99bf0168f0fceb0054))

# [5.0.0-pre.35](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.34...v5.0.0-pre.35) (2023-01-12)

### Bug Fixes

- **cli:** Add unhandledRejection handler to generated index file ([#2932](https://github.com/feathersjs/feathers/issues/2932)) ([e3cedc8](https://github.com/feathersjs/feathers/commit/e3cedc8e00f52d892f21fd6a3eb4ca4fe40a903c))
- **cli:** Minor generated app improvements ([#2936](https://github.com/feathersjs/feathers/issues/2936)) ([ba1a550](https://github.com/feathersjs/feathers/commit/ba1a5500a8a5ea4ab44da44ac509e48c723d7efd))
- **cli:** Properly log validation errors in log-error hook ([54c883c](https://github.com/feathersjs/feathers/commit/54c883c2bb5c35c02b1a2081b2f17554550aa1d4))
- **cli:** Use correct package manager when installing an app ([#2973](https://github.com/feathersjs/feathers/issues/2973)) ([99c2a70](https://github.com/feathersjs/feathers/commit/99c2a70b77f0b68698a66180b69a56cb20c2ca0d))
- **databases:** Make sure adapter method signatures are exported properly ([#2943](https://github.com/feathersjs/feathers/issues/2943)) ([458d668](https://github.com/feathersjs/feathers/commit/458d66859e256c5854e7590f0b4a11b233fe0374))
- **knex:** Ensure custom ids are returned on create ([#2934](https://github.com/feathersjs/feathers/issues/2934)) ([c4fa3cf](https://github.com/feathersjs/feathers/commit/c4fa3cf812d59e6e8e3831ab098bb8768c92e8f4))

### Features

- **generators:** Move core code generators to shared generators package ([#2982](https://github.com/feathersjs/feathers/issues/2982)) ([0328d22](https://github.com/feathersjs/feathers/commit/0328d2292153870bc43958f73d2c6f288a8cec17))
- **schema:** Allow to add additional operators to the query syntax ([#2941](https://github.com/feathersjs/feathers/issues/2941)) ([f324940](https://github.com/feathersjs/feathers/commit/f324940d5795b41e8c6fc113defb0beb7ab03a0a))

# [5.0.0-pre.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14)

### Bug Fixes

- **adapter-commons:** multiple type definition issues ([#2876](https://github.com/feathersjs/feathers/issues/2876)) ([4ff1ed0](https://github.com/feathersjs/feathers/commit/4ff1ed084eb2b2cb687de27a28c96a0dad4530b7))
- **authentication-client:** Do not cache authentication errors ([#2892](https://github.com/feathersjs/feathers/issues/2892)) ([cc4e767](https://github.com/feathersjs/feathers/commit/cc4e76726fce1ac73252cfd92e22570d4bdeca20))
- **authentication-client:** Improve socket reauthentication handling ([#2895](https://github.com/feathersjs/feathers/issues/2895)) ([9db5e7a](https://github.com/feathersjs/feathers/commit/9db5e7adb0f6aea43d607f530d8258ade98b7362))
- **authentication-client:** Remove access token for fatal 400 errors ([#2894](https://github.com/feathersjs/feathers/issues/2894)) ([cfc6c7a](https://github.com/feathersjs/feathers/commit/cfc6c7a6b9dbc7fb60816e2b7f15897c38deb98d))
- **authentication:** Fix order of connection and login event handling ([#2909](https://github.com/feathersjs/feathers/issues/2909)) ([801a503](https://github.com/feathersjs/feathers/commit/801a503425062e27f2a32b91493b6ffae3822626))
- **cli:** mongodb connection string for node 17+ ([#2875](https://github.com/feathersjs/feathers/issues/2875)) ([7fa2012](https://github.com/feathersjs/feathers/commit/7fa2012897d8429b522fbca72211fc9be1c25f7e))
- **core:** `context.type` for around hooks ([#2890](https://github.com/feathersjs/feathers/issues/2890)) ([d606ac6](https://github.com/feathersjs/feathers/commit/d606ac660fd5335c95206784fea36530dd2e851a))
- **core:** Allow services with no external methods ([#2921](https://github.com/feathersjs/feathers/issues/2921)) ([df56918](https://github.com/feathersjs/feathers/commit/df569183d1a9ed0a9e0ea5bf8d7dab52d326a33d))
- **core:** Improve service option usage and method option typings ([#2902](https://github.com/feathersjs/feathers/issues/2902)) ([164d75c](https://github.com/feathersjs/feathers/commit/164d75c0f11139a316baa91f1762de8f8eb7da2d))
- **schema:** Allow query schemas with no properties, error on unsupported types ([#2904](https://github.com/feathersjs/feathers/issues/2904)) ([b66c734](https://github.com/feathersjs/feathers/commit/b66c734357478f51b2d38fa7f3eee08640cea26e))
- **schema:** Check for undefined value in resolveQueryObjectId resolver ([#2914](https://github.com/feathersjs/feathers/issues/2914)) ([d9449fa](https://github.com/feathersjs/feathers/commit/d9449fa835f58fc9cec5f7254c50219494129140))
- **socketio:** Disconnect socket on app disconnect event ([#2896](https://github.com/feathersjs/feathers/issues/2896)) ([4ba0039](https://github.com/feathersjs/feathers/commit/4ba003907843cfc2655798a568b16f07ff8adb1b))
- **typebox:** Improve query syntax defaults ([#2888](https://github.com/feathersjs/feathers/issues/2888)) ([59f3cdc](https://github.com/feathersjs/feathers/commit/59f3cdca6376e34fe39a7b91db837d0325aeb5db))

### Features

- **adapter:** Add patch data type to adapters and refactor AdapterBase usage ([#2906](https://github.com/feathersjs/feathers/issues/2906)) ([9ddc2e6](https://github.com/feathersjs/feathers/commit/9ddc2e6b028f026f939d6af68125847e5c6734b4))
- **cli:** Use separate patch schema and types ([#2916](https://github.com/feathersjs/feathers/issues/2916)) ([7088af6](https://github.com/feathersjs/feathers/commit/7088af64a539dc7f1a016d832b77b98aaaf92603))
- **docs:** CLI and application structure guide ([#2818](https://github.com/feathersjs/feathers/issues/2818)) ([142914f](https://github.com/feathersjs/feathers/commit/142914fc001a8420056dd56db992c1c4f1bd312c))
- **schema:** Split resolver options and property resolvers ([#2889](https://github.com/feathersjs/feathers/issues/2889)) ([4822c94](https://github.com/feathersjs/feathers/commit/4822c949812e5a1dceff3c62b2f9de4781b4d601))
- **schema:** Virtual property resolvers ([#2900](https://github.com/feathersjs/feathers/issues/2900)) ([7d03b57](https://github.com/feathersjs/feathers/commit/7d03b57ae2f633bdd4a368e0d5955011fbd6c329))

# [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)

### Bug Fixes

- **cli:** Fix MongoDB connection database name parsing ([#2845](https://github.com/feathersjs/feathers/issues/2845)) ([50e7463](https://github.com/feathersjs/feathers/commit/50e7463971ef95cb98358b70a721e67554d92eb5))
- **cli:** Use proper MSSQL client ([#2853](https://github.com/feathersjs/feathers/issues/2853)) ([bae5176](https://github.com/feathersjs/feathers/commit/bae5176488b46fc377e53719d20e0036e087aa16))
- **docs:** Add JavaScript web app frontend guide ([#2834](https://github.com/feathersjs/feathers/issues/2834)) ([68cf03f](https://github.com/feathersjs/feathers/commit/68cf03f092da38ccbec5e9fd42b95d00f5a0a9f2))
- **memory:** Use for loop in \_find() for better performance ([#2844](https://github.com/feathersjs/feathers/issues/2844)) ([d6ee5f1](https://github.com/feathersjs/feathers/commit/d6ee5f1c869f0c65cb470130f35956a52356e5c3))

### Features

- **docs:** Add Awesome Ecosystem page ([f66177d](https://github.com/feathersjs/feathers/commit/f66177ded1f48ac45a7105f73c5c3cda7084c7b1))
- **mongodb:** Add ObjectId resolvers and MongoDB option in the guide ([#2847](https://github.com/feathersjs/feathers/issues/2847)) ([c5c1fba](https://github.com/feathersjs/feathers/commit/c5c1fba5718a63412075cd3838b86b889eb0bd48))
- **schema:** Add StringEnum to TypeBox module ([#2827](https://github.com/feathersjs/feathers/issues/2827)) ([65d3665](https://github.com/feathersjs/feathers/commit/65d36656f50a48f633fa3fcabaea10521d04bf1c))

# [5.0.0-pre.32](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.31...v5.0.0-pre.32) (2022-10-26)

### Bug Fixes

- **authentication:** Improve logout and disconnect connection handling ([#2813](https://github.com/feathersjs/feathers/issues/2813)) ([dd77379](https://github.com/feathersjs/feathers/commit/dd77379d8bdcd32d529bef912e672639e4899823))
- **cli:** Ensure code injection points are not code style dependent ([#2832](https://github.com/feathersjs/feathers/issues/2832)) ([0776e26](https://github.com/feathersjs/feathers/commit/0776e26bfe4c1df9d2786499941bd3faba1715c0))
- **cli:** Only generate authentication setup when selected ([#2823](https://github.com/feathersjs/feathers/issues/2823)) ([7d219d9](https://github.com/feathersjs/feathers/commit/7d219d9c5269267b50f3ce99a5653d645f9927c1))
- **docs:** Review transport API docs and update Express middleware setup ([#2811](https://github.com/feathersjs/feathers/issues/2811)) ([1b97f14](https://github.com/feathersjs/feathers/commit/1b97f14d474f5613482f259eeaa585c24fcfab43))
- **schema:** Improve resolver performance ([#2822](https://github.com/feathersjs/feathers/issues/2822)) ([5fa900f](https://github.com/feathersjs/feathers/commit/5fa900f90d55859332c90283dddddab26ae3759c))
- **schema:** Use the same options for resolveData hook ([#2833](https://github.com/feathersjs/feathers/issues/2833)) ([ed3b050](https://github.com/feathersjs/feathers/commit/ed3b05051db6886729d4824825ca8f00c2459af7))
- **transports:** Add remaining middleware for generated apps to Koa and Express ([#2796](https://github.com/feathersjs/feathers/issues/2796)) ([0d5781a](https://github.com/feathersjs/feathers/commit/0d5781a5c72a0cbb2ec8211bfa099f0aefe115a2))

### Features

- **cli:** Add authentication client to generated client ([#2801](https://github.com/feathersjs/feathers/issues/2801)) ([bd59f91](https://github.com/feathersjs/feathers/commit/bd59f91b45a01c2eea0c4386e567f4de5aa6ad99))
- **docs:** New website and documentation pages ([#2802](https://github.com/feathersjs/feathers/issues/2802)) ([ae85fa2](https://github.com/feathersjs/feathers/commit/ae85fa216f12f7ff5d15e7039640e27a09989ea4))

# [5.0.0-pre.31](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.30...v5.0.0-pre.31) (2022-10-12)

### Bug Fixes

- **errors:** Allows to pass no error message ([#2794](https://github.com/feathersjs/feathers/issues/2794)) ([f3ddab6](https://github.com/feathersjs/feathers/commit/f3ddab637e269e67e852ffce07b060bab2b085c0))
- **koa:** Only set error code for Feathers errors ([#2793](https://github.com/feathersjs/feathers/issues/2793)) ([d3ee41e](https://github.com/feathersjs/feathers/commit/d3ee41e27b0ea5d29b344d6584ab03e48d16e2b4))

### Features

- **cli:** Generate full client test suite and improve typed client ([#2788](https://github.com/feathersjs/feathers/issues/2788)) ([57119b6](https://github.com/feathersjs/feathers/commit/57119b6bb2797f7297cf054268a248c093ecd538))
- **cli:** Improve generated schema definitions ([#2783](https://github.com/feathersjs/feathers/issues/2783)) ([474a9fd](https://github.com/feathersjs/feathers/commit/474a9fda2107e9bcf357746320a8e00cda8182b6))

# [5.0.0-pre.30](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.29...v5.0.0-pre.30) (2022-10-07)

### Bug Fixes

- **authentication-oauth:** Fix regression with prefix handling in OAuth ([#2773](https://github.com/feathersjs/feathers/issues/2773)) ([b1844b1](https://github.com/feathersjs/feathers/commit/b1844b1f27feeb7e66920ec9e318872857711834))
- **core:** Ensure setup and teardown can be overriden and maintain hook functionality ([#2779](https://github.com/feathersjs/feathers/issues/2779)) ([ab580cb](https://github.com/feathersjs/feathers/commit/ab580cbcaa68d19144d86798c13bf564f9d424a6))

### Features

- **cli:** Add ability to `npm init feathers` ([#2755](https://github.com/feathersjs/feathers/issues/2755)) ([d734931](https://github.com/feathersjs/feathers/commit/d734931ffd4f983a05d9e771ce0e43b696c2bc0e))
- **cli:** Improve CLI interface ([#2753](https://github.com/feathersjs/feathers/issues/2753)) ([c7e1b7e](https://github.com/feathersjs/feathers/commit/c7e1b7e80aacb84441908c3d73512d9cf7557f7e))
- **core:** Allow to unregister services at runtime ([#2756](https://github.com/feathersjs/feathers/issues/2756)) ([d16601f](https://github.com/feathersjs/feathers/commit/d16601f2277dca5357866ffdefba2a611f6dc7fa))
- **schema:** Make schemas validation library independent and add TypeBox support ([#2772](https://github.com/feathersjs/feathers/issues/2772)) ([44172d9](https://github.com/feathersjs/feathers/commit/44172d99b566d11d9ceda04f1d0bf72b6d05ce76))

# [5.0.0-pre.29](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.28...v5.0.0-pre.29) (2022-09-16)

### Bug Fixes

- **authentication-oauth:** Fix oAuth origin and error handling ([#2752](https://github.com/feathersjs/feathers/issues/2752)) ([f7e1c33](https://github.com/feathersjs/feathers/commit/f7e1c33de1b7af0672a302d2ba6e15d997f0aa83))
- **schema:** Fix for Ajv global collision bug [#2681](https://github.com/feathersjs/feathers/issues/2681) ([#2702](https://github.com/feathersjs/feathers/issues/2702)) ([0b2def6](https://github.com/feathersjs/feathers/commit/0b2def6ca483fad6ca22fcc4ea9873bc027925d8))
- **socketio:** Reinitialize hooks on overriden setup method ([#2722](https://github.com/feathersjs/feathers/issues/2722)) ([5e8e7c4](https://github.com/feathersjs/feathers/commit/5e8e7c442238fdc929a0a36b8b8ca2b230ce761f))

### Features

- Add CORS support to oAuth, Express, Koa and generated application ([#2744](https://github.com/feathersjs/feathers/issues/2744)) ([fd218f2](https://github.com/feathersjs/feathers/commit/fd218f289f8ca4c101e9938e8683e2efef6e8131))
- **authentication-oauth:** Koa and transport independent oAuth authentication ([#2737](https://github.com/feathersjs/feathers/issues/2737)) ([9231525](https://github.com/feathersjs/feathers/commit/9231525a24bb790ba9c5d940f2867a9c727691c9))
- **cli:** Add custom environment variable support to generated application ([#2751](https://github.com/feathersjs/feathers/issues/2751)) ([c7bf80d](https://github.com/feathersjs/feathers/commit/c7bf80d82c28c190e3f0136d51af5b7de1bc4868))
- **cli:** Adding ClientService to CLI ([#2750](https://github.com/feathersjs/feathers/issues/2750)) ([1d45427](https://github.com/feathersjs/feathers/commit/1d45427988521ac028755cbe128685fcdf34f636))

# [5.0.0-pre.28](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.27...v5.0.0-pre.28) (2022-08-03)

### Bug Fixes

- **authentication-client:** Properly handle missing token error ([#2700](https://github.com/feathersjs/feathers/issues/2700)) ([160746e](https://github.com/feathersjs/feathers/commit/160746e2bceb465fd1b6a003415f8ab38daba521))
- **cli:** Improve generated application and client ([#2701](https://github.com/feathersjs/feathers/issues/2701)) ([bd55ffb](https://github.com/feathersjs/feathers/commit/bd55ffb812e89bf215f4515e7f137656ea888c3f))
- **core:** Get hooks to work reliably with custom methods ([#2714](https://github.com/feathersjs/feathers/issues/2714)) ([8d7e04a](https://github.com/feathersjs/feathers/commit/8d7e04acd0f0e2af9f4c13efee652d296dd3bc51))
- **knex:** Fix PostgreSQL integration issues and run CI tests against pg ([#2698](https://github.com/feathersjs/feathers/issues/2698)) ([1f71d78](https://github.com/feathersjs/feathers/commit/1f71d7884656c1494004931f4979ad59d23e4ee6))
- **mongodb:** Ensure transactions are used properly in create ([#2699](https://github.com/feathersjs/feathers/issues/2699)) ([fe22615](https://github.com/feathersjs/feathers/commit/fe22615b7fa17d3c20ac26d6f82097917c9b63f6))

# [5.0.0-pre.27](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.26...v5.0.0-pre.27) (2022-07-13)

### Bug Fixes

- **authentication-client:** Ensure reAuthenticate works in parallel with other requests ([#2690](https://github.com/feathersjs/feathers/issues/2690)) ([41b3761](https://github.com/feathersjs/feathers/commit/41b376106b47e2f40a8914db7a5ed2935e070c08))
- **cli:** Fix flaky authentication migration and SQL id schema types ([#2676](https://github.com/feathersjs/feathers/issues/2676)) ([04ce9a5](https://github.com/feathersjs/feathers/commit/04ce9a53f4226cd6283f9dc241876e90ddf48618))
- Freeze the resolver context ([#2685](https://github.com/feathersjs/feathers/issues/2685)) ([247dccb](https://github.com/feathersjs/feathers/commit/247dccb2eb72551962030321cb1c0ecb11b0181e))
- **socketio-client:** Make Socket.io client event target compatible ([#2686](https://github.com/feathersjs/feathers/issues/2686)) ([716c49a](https://github.com/feathersjs/feathers/commit/716c49a270e4be5e5276192092c292f72ffcfa19))

### Features

- **cli:** Add support for Prettier ([#2684](https://github.com/feathersjs/feathers/issues/2684)) ([83aa8f9](https://github.com/feathersjs/feathers/commit/83aa8f9f212cb122d831dca8858852b0ac9b4da8))
- **cli:** Improve generated application folder structure ([#2678](https://github.com/feathersjs/feathers/issues/2678)) ([d114557](https://github.com/feathersjs/feathers/commit/d114557721e73d6302aa88c11e3726dbcbd5c92b))

# [5.0.0-pre.26](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.25...v5.0.0-pre.26) (2022-06-22)

### Bug Fixes

- **cli:** Fix compilation folders that got mixed up ([fc4cb74](https://github.com/feathersjs/feathers/commit/fc4cb742f7f9164096d9319b13dfaaa5f54686a6))

# [5.0.0-pre.25](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.24...v5.0.0-pre.25) (2022-06-22)

### Bug Fixes

- **cli:** Generator fixes to work with the new guide ([#2674](https://github.com/feathersjs/feathers/issues/2674)) ([b773fa5](https://github.com/feathersjs/feathers/commit/b773fa5dbd7ff450cfb2f7b93e64882592262712))

# [5.0.0-pre.24](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.23...v5.0.0-pre.24) (2022-06-21)

### Bug Fixes

- **authentication-oauth:** Fix bug and properly set Grant defaults ([#2659](https://github.com/feathersjs/feathers/issues/2659)) ([cb93bb9](https://github.com/feathersjs/feathers/commit/cb93bb911fd92282424da2db805cd685b7e4a45b))
- **authentication:** Add safe dispatch data for authentication requests ([#2662](https://github.com/feathersjs/feathers/issues/2662)) ([d8104a1](https://github.com/feathersjs/feathers/commit/d8104a19ee9181e6a5ea81014af29ff9a3c28a8a))
- **schema:** Fix dispatch resolver hook to convert actually resolved data ([#2663](https://github.com/feathersjs/feathers/issues/2663)) ([f7e87db](https://github.com/feathersjs/feathers/commit/f7e87dbb9a0bc8d89aee47318dddbaa4d6ba5b91))

### Features

- **authentication-local:** Add passwordHash property resolver ([#2660](https://github.com/feathersjs/feathers/issues/2660)) ([b41279b](https://github.com/feathersjs/feathers/commit/b41279b55eea3771a6fa4983a37be2413287bbc6))
- **cli:** Add generators for new Knex SQL database adapter ([#2673](https://github.com/feathersjs/feathers/issues/2673)) ([0fb2c0f](https://github.com/feathersjs/feathers/commit/0fb2c0f629116f71184b8698c383af8cfd149688))
- **cli:** Add hook generator ([#2667](https://github.com/feathersjs/feathers/issues/2667)) ([24e4bc0](https://github.com/feathersjs/feathers/commit/24e4bc04a67fadee0e6a96a8389d788faba5c305))
- **cli:** Add support for JavaScript to the new CLI ([#2668](https://github.com/feathersjs/feathers/issues/2668)) ([ebac587](https://github.com/feathersjs/feathers/commit/ebac587f7d00dc7607c3f546352d79f79b89a5d4))
- **cli:** Add typed client to a generated app ([#2669](https://github.com/feathersjs/feathers/issues/2669)) ([5b801b5](https://github.com/feathersjs/feathers/commit/5b801b5017ddc3eaa95622b539f51d605916bc86))
- **cli:** Initial Feathers v5 CLI and Pinion generator ([#2578](https://github.com/feathersjs/feathers/issues/2578)) ([7f59ae7](https://github.com/feathersjs/feathers/commit/7f59ae7f1471895ba8a82aa4702f1a23f71b7682))
- **knex:** Add KnexJS SQL database adapter to core ([#2671](https://github.com/feathersjs/feathers/issues/2671)) ([9380fff](https://github.com/feathersjs/feathers/commit/9380fff58596e8bb90b8bb098d2795b7eadfec20))

# [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06)

### Bug Fixes

- **express:** Ensure Express options can be set before configuring REST transport ([#2655](https://github.com/feathersjs/feathers/issues/2655)) ([c9b8f74](https://github.com/feathersjs/feathers/commit/c9b8f74a0196acb99be44ac5e0fff3f1128288cd))
- **schema:** Always resolve dispatch in resolveAll and add getDispatch method ([#2645](https://github.com/feathersjs/feathers/issues/2645)) ([145b366](https://github.com/feathersjs/feathers/commit/145b366435695438fbc8db9fdb161162ca9049ad))
- **schema:** remove `default` from queryProperty schemas ([#2646](https://github.com/feathersjs/feathers/issues/2646)) ([940a2b6](https://github.com/feathersjs/feathers/commit/940a2b6868d2f77f81edb1661f6417ec2ea6e372))

### Features

- **client:** Improve client side custom method support ([#2654](https://github.com/feathersjs/feathers/issues/2654)) ([c138acf](https://github.com/feathersjs/feathers/commit/c138acf50affbe6b66177d084d3c7a3e9220f09f))
- **core:** Rename async hooks to around hooks, allow usual registration format ([#2652](https://github.com/feathersjs/feathers/issues/2652)) ([2a485a0](https://github.com/feathersjs/feathers/commit/2a485a07929184261f27437fc0fdfe5a44694834))

# [5.0.0-pre.22](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.21...v5.0.0-pre.22) (2022-05-24)

### Bug Fixes

- **schema:** Allows resolveData with different resolvers based on method ([#2644](https://github.com/feathersjs/feathers/issues/2644)) ([be71fa2](https://github.com/feathersjs/feathers/commit/be71fa2fe260e05b7dcc0d5f439e33f2e9ec2434))

# [5.0.0-pre.21](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.20...v5.0.0-pre.21) (2022-05-23)

### Bug Fixes

- **authentication-oauth:** Fix regression using incorrect callback and redirect_uri ([#2631](https://github.com/feathersjs/feathers/issues/2631)) ([43d8a08](https://github.com/feathersjs/feathers/commit/43d8a082d7e1807f8a431c44a1dbd9b04c3af0d2))
- **core:** Do not throw missing method error for regular hook methods ([#2636](https://github.com/feathersjs/feathers/issues/2636)) ([afe9a3b](https://github.com/feathersjs/feathers/commit/afe9a3b3d49897eff045ee237ca2937a6b975291))
- **schema:** Add Combine helper to allow merging schema types that use ([#2637](https://github.com/feathersjs/feathers/issues/2637)) ([06d03e9](https://github.com/feathersjs/feathers/commit/06d03e91abb1347576c2351c12322d01c58473e5))
- **typescript:** Make additional types generic to work with extended types ([#2625](https://github.com/feathersjs/feathers/issues/2625)) ([269fdec](https://github.com/feathersjs/feathers/commit/269fdecc5961092dc8608b3cbe16f433c80bfa96))

### Features

- **schema:** Add resolveAll hook ([#2643](https://github.com/feathersjs/feathers/issues/2643)) ([85527d7](https://github.com/feathersjs/feathers/commit/85527d71cb78852880696e5d96abdcdf24593934))
- **schema:** Add resolver for safe external data dispatching ([#2641](https://github.com/feathersjs/feathers/issues/2641)) ([72b980e](https://github.com/feathersjs/feathers/commit/72b980e05631136d30c8f1468dee45ec6a8d2503))
- **schema:** Add schema resolver converter functionality ([#2640](https://github.com/feathersjs/feathers/issues/2640)) ([26d9e05](https://github.com/feathersjs/feathers/commit/26d9e05327d6e0144466cd57d6fcc11ac7ecb06a))

# [5.0.0-pre.20](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.19...v5.0.0-pre.20) (2022-05-04)

### Bug Fixes

- **authentication-oauth:** Don't send origins in Grant's config, as it will be considered another provider ([#2617](https://github.com/feathersjs/feathers/issues/2617)) ([ae3dddd](https://github.com/feathersjs/feathers/commit/ae3dddd8a654924465512d56b4651413912c6932))
- **configuration:** Only validate the initial configuration against the schema ([#2622](https://github.com/feathersjs/feathers/issues/2622)) ([386c5e2](https://github.com/feathersjs/feathers/commit/386c5e2e67bfad4fb4333f2e3e17f7d7e09ac27e))
- **dependencies:** Lock monorepo package version numbers ([#2623](https://github.com/feathersjs/feathers/issues/2623)) ([5640c10](https://github.com/feathersjs/feathers/commit/5640c1020cc139994e695d658c08bad3494db507))

### Features

- **schema:** Add querySyntax helper to create full query schemas ([#2621](https://github.com/feathersjs/feathers/issues/2621)) ([2bbb103](https://github.com/feathersjs/feathers/commit/2bbb103b2f3e30fb0fff935f92ad3276a1a67e41))

# [5.0.0-pre.19](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.18...v5.0.0-pre.19) (2022-05-01)

### Bug Fixes

- **adapter-commons:** Clarify adapter query filtering ([#2607](https://github.com/feathersjs/feathers/issues/2607)) ([2dac771](https://github.com/feathersjs/feathers/commit/2dac771b0a3298d6dd25994d05186701b0617718))
- **adapter-tests:** Ensure multi tests can run standalone ([#2608](https://github.com/feathersjs/feathers/issues/2608)) ([d7243f2](https://github.com/feathersjs/feathers/commit/d7243f20e84d9dde428ad8dfc7f48388ca569e6e))
- **authentication-oauth:** Fix issue with overriding the default Grant configuration ([#2615](https://github.com/feathersjs/feathers/issues/2615)) ([b345857](https://github.com/feathersjs/feathers/commit/b3458578532f9750de2940aeb8afdc75cb0b46f2))
- **authentication-oauth:** Make oAuth authentication work with cookie-session ([#2614](https://github.com/feathersjs/feathers/issues/2614)) ([9f10bfc](https://github.com/feathersjs/feathers/commit/9f10bfc75083d5bcabea77cfb385aa3965cdf6d6))
- **client:** Fix @feathersjs/client types field ([#2596](https://github.com/feathersjs/feathers/issues/2596)) ([d719f54](https://github.com/feathersjs/feathers/commit/d719f54daee63daf9ed5cc762626ca15131086de))
- **express:** Fix typo in types reference in package.json ([#2613](https://github.com/feathersjs/feathers/issues/2613)) ([eacf1b3](https://github.com/feathersjs/feathers/commit/eacf1b3474e6d9da69b8671244c23a75cff87d95))
- **transport-commons:** Ensure socket queries are always plain objects ([#2597](https://github.com/feathersjs/feathers/issues/2597)) ([97313e1](https://github.com/feathersjs/feathers/commit/97313e121cfee4199f10012e95b8507557aa507e))

### Features

- **mongodb:** Add feathers-mongodb adapter as @feathersjs/mongodb ([#2610](https://github.com/feathersjs/feathers/issues/2610)) ([6d43734](https://github.com/feathersjs/feathers/commit/6d43734a53db02c435cafc52a22dca414e5d0940))
- **schema:** Allow hooks to run resolvers in sequence ([#2609](https://github.com/feathersjs/feathers/issues/2609)) ([d85c507](https://github.com/feathersjs/feathers/commit/d85c507c76d07e48fc8e7e28ff7de0ef435e0ef8))
- **typescript:** Improve adapter typings ([#2605](https://github.com/feathersjs/feathers/issues/2605)) ([3b2ca0a](https://github.com/feathersjs/feathers/commit/3b2ca0a6a8e03e8390272c4d7e930b4bffdaacf5))
- **typescript:** Improve params and query typeability ([#2600](https://github.com/feathersjs/feathers/issues/2600)) ([df28b76](https://github.com/feathersjs/feathers/commit/df28b7619161f1df5e700326f52cca1a92dc5d28))

### BREAKING CHANGES

- **adapter-commons:** Changes the common adapter base class to use `sanitizeQuery` and `sanitizeData`

# [5.0.0-pre.18](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.17...v5.0.0-pre.18) (2022-04-11)

### Bug Fixes

- **adapter-tests:** Add tests for pagination in multi updates ([#2472](https://github.com/feathersjs/feathers/issues/2472)) ([98a811a](https://github.com/feathersjs/feathers/commit/98a811ac605575ff812a08d0504729a5efe7a69c))
- **core:** Ensure that dynamically registered services are always set up ([#2593](https://github.com/feathersjs/feathers/issues/2593)) ([27cc7d0](https://github.com/feathersjs/feathers/commit/27cc7d08321861cd69e6b66e1fdfa43c50664820))
- **schema:** result resolver correctly resolves paginated find result ([#2594](https://github.com/feathersjs/feathers/issues/2594)) ([6511e45](https://github.com/feathersjs/feathers/commit/6511e45bd0624f1a629530719709f4b27fecbe0b))

### Features

- **authentication:** Add setup method for auth strategies ([#1611](https://github.com/feathersjs/feathers/issues/1611)) ([a3c3581](https://github.com/feathersjs/feathers/commit/a3c35814dccdbbf6de96f04f60b226ce206c6dbe))
- **configuration:** Allow app configuration to be validated against a schema ([#2590](https://github.com/feathersjs/feathers/issues/2590)) ([a268f86](https://github.com/feathersjs/feathers/commit/a268f86da92a8ada14ed11ab456aac0a4bba5bb0))
- **core:** Add app.setup and app.teardown hook support ([#2585](https://github.com/feathersjs/feathers/issues/2585)) ([ae4ebee](https://github.com/feathersjs/feathers/commit/ae4ebee5d39957651473007c4d3adb210160e040))
- **core:** Add app.teardown functionality ([#2570](https://github.com/feathersjs/feathers/issues/2570)) ([fcdf524](https://github.com/feathersjs/feathers/commit/fcdf524ae1995bb59265d39f12e98b7794bed023))
- **core:** Finalize app.teardown() functionality ([#2584](https://github.com/feathersjs/feathers/issues/2584)) ([1a166f3](https://github.com/feathersjs/feathers/commit/1a166f3ded811ecacf0ae8cb67880bc9fa2eeafa))
- **transport-commons:** add `context.http.response` ([#2524](https://github.com/feathersjs/feathers/issues/2524)) ([5bc9d44](https://github.com/feathersjs/feathers/commit/5bc9d447043c2e2b742c73ed28ecf3b3264dd9e5))

# [5.0.0-pre.17](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.16...v5.0.0-pre.17) (2022-02-15)

### Bug Fixes

- **express:** Fix application typings to work with typed configuration ([#2539](https://github.com/feathersjs/feathers/issues/2539)) ([b9dfaee](https://github.com/feathersjs/feathers/commit/b9dfaee834b13864c1ed4f2f6a244eb5bb70395b))
- **hooks:** Allow all built-in hooks to be used the async and regular way ([#2559](https://github.com/feathersjs/feathers/issues/2559)) ([8f9f631](https://github.com/feathersjs/feathers/commit/8f9f631e0ce89de349207db72def84e7ab496a4a))
- **queryProperty:** allow compound oneOf ([#2545](https://github.com/feathersjs/feathers/issues/2545)) ([3077d2d](https://github.com/feathersjs/feathers/commit/3077d2d896a38d579ce4d5b530e21ad332bcf221))
- **schema:** Properly handle resolver errors ([#2540](https://github.com/feathersjs/feathers/issues/2540)) ([31fbdff](https://github.com/feathersjs/feathers/commit/31fbdff8bd848ac7e0eda56e307ac34b1bfcf17f))

# [5.0.0-pre.16](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.15...v5.0.0-pre.16) (2022-01-12)

### Bug Fixes

- **authentication-oauth:** OAuth redirect lost sometimes due to session store race ([#2514](https://github.com/feathersjs/feathers/issues/2514)) ([#2515](https://github.com/feathersjs/feathers/issues/2515)) ([6109c44](https://github.com/feathersjs/feathers/commit/6109c44428c6b8f6bb4e089be760ea1a4ef3d01e))
- **schema:** Do not error for schemas without properties ([#2519](https://github.com/feathersjs/feathers/issues/2519)) ([96fdb47](https://github.com/feathersjs/feathers/commit/96fdb47d45fd88a8039aa9cc9ec8aebd98672b95))
- **schema:** Fix resolver data type and use new validation feature in test fixture ([#2523](https://github.com/feathersjs/feathers/issues/2523)) ([1093f12](https://github.com/feathersjs/feathers/commit/1093f124b60524cbd9050fcf07ddaf1d558973da))

### Features

- **express, koa:** make transports similar ([#2486](https://github.com/feathersjs/feathers/issues/2486)) ([26aa937](https://github.com/feathersjs/feathers/commit/26aa937c114fb8596dfefc599b1f53cead69c159))
- **schema:** Allow to use custom AJV and test with ajv-formats ([#2513](https://github.com/feathersjs/feathers/issues/2513)) ([ecfa4df](https://github.com/feathersjs/feathers/commit/ecfa4df29f029f6ca8517cacf518c14b46ffeb4e))
- **schema:** Improve schema typing, validation and extensibility ([#2521](https://github.com/feathersjs/feathers/issues/2521)) ([8c1b350](https://github.com/feathersjs/feathers/commit/8c1b35052792e82d13be03c06583534284fbae82))

# [5.0.0-pre.15](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.14...v5.0.0-pre.15) (2021-11-27)

### Bug Fixes

- **adapter-commons:** clean up in sort.ts and select function ([#2492](https://github.com/feathersjs/feathers/issues/2492)) ([c3ec8a4](https://github.com/feathersjs/feathers/commit/c3ec8a418bdc85506e3c5100015720a45454d8d3))
- **adapter-commons:** Fix sorting for embedded objects ([#2488](https://github.com/feathersjs/feathers/issues/2488)) ([9c22f70](https://github.com/feathersjs/feathers/commit/9c22f70a838cb6341775d91705a7527c8fc5590e))
- missing express types for Request, Response ([#2498](https://github.com/feathersjs/feathers/issues/2498)) ([ee67131](https://github.com/feathersjs/feathers/commit/ee67131bbaa24c54d3d781bdf8820015759ac488))
- **typescript:** Overall typing improvements ([#2478](https://github.com/feathersjs/feathers/issues/2478)) ([b8eb804](https://github.com/feathersjs/feathers/commit/b8eb804158556d9651a8607e3c3fda15e0bfd110))

### Features

- **authentication-oauth:** Allow dynamic oAuth redirect ([#2469](https://github.com/feathersjs/feathers/issues/2469)) ([b7143d4](https://github.com/feathersjs/feathers/commit/b7143d4c0fbe961e714f79512be04449b9bbd7d9))
- **core:** add `context.http` and move `statusCode` there ([#2496](https://github.com/feathersjs/feathers/issues/2496)) ([b701bf7](https://github.com/feathersjs/feathers/commit/b701bf77fb83048aa1dffa492b3d77dd53f7b72b))
- **core:** Improve legacy hooks integration ([08c8b40](https://github.com/feathersjs/feathers/commit/08c8b40999bf3889c61a4d4fad97a2c4f78bafc9))
- **transport-commons:** Ability to register routes with custom params ([#2482](https://github.com/feathersjs/feathers/issues/2482)) ([497990a](https://github.com/feathersjs/feathers/commit/497990ae4a980e5a52a1f0f932db12cd0e6e254a))

# [5.0.0-pre.14](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.13...v5.0.0-pre.14) (2021-10-13)

**Note:** Version bump only for package feathers

# [5.0.0-pre.13](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.12...v5.0.0-pre.13) (2021-10-13)

**Note:** Version bump only for package feathers

# [5.0.0-pre.12](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.11...v5.0.0-pre.12) (2021-10-12)

**Note:** Version bump only for package feathers

# [5.0.0-pre.11](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.10...v5.0.0-pre.11) (2021-10-06)

### Bug Fixes

- **core:** Allow to return a new hook context in basic hooks ([#2462](https://github.com/feathersjs/feathers/issues/2462)) ([422b6fc](https://github.com/feathersjs/feathers/commit/422b6fc11cf9e42f4234f0823a0b06a4df50982d))

### Features

- **schema:** Allow resolvers to validate a schema ([#2465](https://github.com/feathersjs/feathers/issues/2465)) ([7d9590b](https://github.com/feathersjs/feathers/commit/7d9590bbe12b94b8b5a7987684f5d4968e426481))

# [5.0.0-pre.10](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.9...v5.0.0-pre.10) (2021-09-19)

### Bug Fixes

- **authentication-local:** adds error handling for undefined/null password field ([#2444](https://github.com/feathersjs/feathers/issues/2444)) ([4323f98](https://github.com/feathersjs/feathers/commit/4323f9859a66a7fe3f7f15d81476bd81b735c226))

### Features

- **schema:** Initial version of schema definitions and resolvers ([#2441](https://github.com/feathersjs/feathers/issues/2441)) ([c57a5cd](https://github.com/feathersjs/feathers/commit/c57a5cd56699a121647be4506d8f967e6d72ecae))

# [5.0.0-pre.9](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.8...v5.0.0-pre.9) (2021-08-09)

**Note:** Version bump only for package feathers

# [5.0.0-pre.8](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.7...v5.0.0-pre.8) (2021-08-09)

**Note:** Version bump only for package feathers

# [5.0.0-pre.7](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.6...v5.0.0-pre.7) (2021-08-09)

### Bug Fixes

- **core:** Clean up readme ([eb3b4f2](https://github.com/feathersjs/feathers/commit/eb3b4f248c0816c92a2300cceed18a6f2518508a))
- **core:** Set version back to development ([b328767](https://github.com/feathersjs/feathers/commit/b3287676cd773e164fd646ba4cffbf81983a9157))

# [5.0.0-pre.6](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.5...v5.0.0-pre.6) (2021-08-08)

### Bug Fixes

- **koa:** Throw a NotFound Feathers error on missing paths ([#2415](https://github.com/feathersjs/feathers/issues/2415)) ([e013f98](https://github.com/feathersjs/feathers/commit/e013f98315d550ced6eacffd615c61bb0912b4ba))

# [5.0.0-pre.5](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.4...v5.0.0-pre.5) (2021-06-23)

### Bug Fixes

- **authentication-oauth:** Omit query from internal calls ([#2398](https://github.com/feathersjs/feathers/issues/2398)) ([04c7c83](https://github.com/feathersjs/feathers/commit/04c7c83eeaa6a7466c84b958071b468ed42f0b0f))
- **core:** Add list of protected methods that can not be used for custom methods ([#2390](https://github.com/feathersjs/feathers/issues/2390)) ([6584a21](https://github.com/feathersjs/feathers/commit/6584a216e5a7d5f2a45822be6bfcb91c35cc2252))
- **hooks:** Migrate built-in hooks and allow backwards compatibility ([#2358](https://github.com/feathersjs/feathers/issues/2358)) ([759c5a1](https://github.com/feathersjs/feathers/commit/759c5a19327a731af965c3604119393b3d09a406))
- **koa:** Use extended query parser for compatibility ([#2397](https://github.com/feathersjs/feathers/issues/2397)) ([b2944ba](https://github.com/feathersjs/feathers/commit/b2944bac3ec6d5ecc80dc518cd4e58093692db74))
- Update database adapter common repository urls ([#2380](https://github.com/feathersjs/feathers/issues/2380)) ([3f4db68](https://github.com/feathersjs/feathers/commit/3f4db68d6700c7d9023ecd17d0d39893f75a19fd))

### Features

- **typescript:** Allow to pass generic service options to adapter services ([#2392](https://github.com/feathersjs/feathers/issues/2392)) ([f9431f2](https://github.com/feathersjs/feathers/commit/f9431f242354f804cafb835519f98dd405ac4f0b))
- Support being a built-in CodeSandbox sandbox ([#2381](https://github.com/feathersjs/feathers/issues/2381)) ([a2ac25a](https://github.com/feathersjs/feathers/commit/a2ac25a26e80530f7c50b88ef15eef46ee2b0634))
- **adapter-commons:** Add support for params.adapter option and move memory adapter to @feathersjs/memory ([#2367](https://github.com/feathersjs/feathers/issues/2367)) ([a43e7da](https://github.com/feathersjs/feathers/commit/a43e7da22b6b981a96d1321736ea9a0cb924fb4f))

# [5.0.0-pre.4](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.3...v5.0.0-pre.4) (2021-05-13)

### Bug Fixes

- **transport-commons:** Fix route placeholder registration and improve radix router performance ([#2336](https://github.com/feathersjs/feathers/issues/2336)) ([4d84dfd](https://github.com/feathersjs/feathers/commit/4d84dfd092ce0510312e975d5cd57e04973fb311))
- **typescript:** Move Paginated type back for better compatibility ([#2350](https://github.com/feathersjs/feathers/issues/2350)) ([2917d05](https://github.com/feathersjs/feathers/commit/2917d05fffb4716d3c4cdaa5ac6a1aee0972e8a6))

### Features

- **koa:** KoaJS transport adapter ([#2315](https://github.com/feathersjs/feathers/issues/2315)) ([2554b57](https://github.com/feathersjs/feathers/commit/2554b57cf05731df58feeba9c12faab18e442107))

# [5.0.0-pre.3](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.2...v5.0.0-pre.3) (2021-04-21)

### Bug Fixes

- **typescript:** Improve TypeScript backwards compatibility ([#2310](https://github.com/feathersjs/feathers/issues/2310)) ([f33be73](https://github.com/feathersjs/feathers/commit/f33be73fc46a533efb15df9aab0658e3240d3897))

### Features

- **deno:** Feathers core build for Deno ([#2299](https://github.com/feathersjs/feathers/issues/2299)) ([dece8fb](https://github.com/feathersjs/feathers/commit/dece8fbc0e7601f1505ce8bbb1e4e69cc26e8f98))
- **dependencies:** Remove direct debug dependency ([#2296](https://github.com/feathersjs/feathers/issues/2296)) ([501d416](https://github.com/feathersjs/feathers/commit/501d4164d30c6a126906dc640cdfdc82207ba34a))

# [5.0.0-pre.2](https://github.com/feathersjs/feathers/compare/v5.0.0-beta.1...v5.0.0-pre.2) (2021-04-06)

**Note:** Version bump only for package feathers

# [5.0.0-beta.1](https://github.com/feathersjs/feathers/compare/v5.0.0-beta.0...v5.0.0-beta.1) (2021-04-03)

### Bug Fixes

- **adapter-tests:** Add test that verified paginated total ([#2273](https://github.com/feathersjs/feathers/issues/2273)) ([879bd6b](https://github.com/feathersjs/feathers/commit/879bd6b24f42e04eeeeba110ddddda3e1e1dea34))
- **dependencies:** Fix transport-commons dependency and update other dependencies ([#2284](https://github.com/feathersjs/feathers/issues/2284)) ([05b03b2](https://github.com/feathersjs/feathers/commit/05b03b27b40604d956047e3021d8053c3a137616))
- **feathers:** Always enable hooks on default service methods ([#2275](https://github.com/feathersjs/feathers/issues/2275)) ([827cc9b](https://github.com/feathersjs/feathers/commit/827cc9b752eecdaf63605d7dffd86f531b7e4af3))

### Features

- **adapter-commons:** Added mongoDB like search in embedded objects ([687e3c7](https://github.com/feathersjs/feathers/commit/687e3c7c36904221b2707d0220c0893e3cb1faa9))

# [5.0.0-beta.0](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.1...v5.0.0-beta.0) (2021-03-28)

### Bug Fixes

- **adapter-commons:** Always respect paginate.max ([#2267](https://github.com/feathersjs/feathers/issues/2267)) ([f588257](https://github.com/feathersjs/feathers/commit/f5882575536624ed3a32bb6e3ff1919fa17e366d))
- **transport-commons:** Do not error when adding an undefined connection to a channel ([#2268](https://github.com/feathersjs/feathers/issues/2268)) ([28114c4](https://github.com/feathersjs/feathers/commit/28114c495d6564868bb3ffbf619bf80b774dce4b))
- Resolve some type problems ([#2260](https://github.com/feathersjs/feathers/issues/2260)) ([a3d75fa](https://github.com/feathersjs/feathers/commit/a3d75fa29490e8a19412a12bc993ee7bb573068f))
- Update Grant usage and other dependencies ([#2264](https://github.com/feathersjs/feathers/issues/2264)) ([7b0f8fa](https://github.com/feathersjs/feathers/commit/7b0f8fad252419ed0ad0bf259cdf3104d322ab60))
- **adapter-commons:** Return missing overloads ([#2203](https://github.com/feathersjs/feathers/issues/2203)) ([bbe7e2a](https://github.com/feathersjs/feathers/commit/bbe7e2a131633e9a6e7aac7f7fa02a312bca63c7))
- **socketio-client:** Fix client transport-commons reference ([#2164](https://github.com/feathersjs/feathers/issues/2164)) ([3a42c54](https://github.com/feathersjs/feathers/commit/3a42c544058456b19c7e21827226541bfa6ad621))

### Features

- **core:** Public custom service methods ([#2270](https://github.com/feathersjs/feathers/issues/2270)) ([e65abfb](https://github.com/feathersjs/feathers/commit/e65abfb5388df6c19a11c565cf1076a29f32668d))
- Application service types default to any ([#1566](https://github.com/feathersjs/feathers/issues/1566)) ([d93ba9a](https://github.com/feathersjs/feathers/commit/d93ba9a17edd20d3397bb00f4f6e82e804e42ed6))
- Feathers v5 core refactoring and features ([#2255](https://github.com/feathersjs/feathers/issues/2255)) ([2dafb7c](https://github.com/feathersjs/feathers/commit/2dafb7ce14ba57406aeec13d10ca45b1e709bee9))
- **authentication-client:** Throw separate OauthError in authentication client ([#2189](https://github.com/feathersjs/feathers/issues/2189)) ([fa45ec5](https://github.com/feathersjs/feathers/commit/fa45ec520b21834e103e6fe4200b06dced56c0e6))
- **core:** Remove Uberproto ([#2178](https://github.com/feathersjs/feathers/issues/2178)) ([ddf8821](https://github.com/feathersjs/feathers/commit/ddf8821f53317e6a378657f7d66acb03a037ee47))
- **transport-commons:** New built-in high performance radix router ([#2177](https://github.com/feathersjs/feathers/issues/2177)) ([6d18065](https://github.com/feathersjs/feathers/commit/6d180651b4eb40289ecea3df3575f207aa6c5d1f))

### BREAKING CHANGES

- **core:** Services no longer extend Uberproto objects and
  `service.mixin()` is no longer available.

# [5.0.0-pre.1](https://github.com/feathersjs/feathers/compare/v4.5.11...v5.0.0-pre.1) (2020-12-17)

### Features

- **memory:** Move feathers-memory into @feathersjs/memory ([#2153](https://github.com/feathersjs/feathers/issues/2153)) ([dd61fe3](https://github.com/feathersjs/feathers/commit/dd61fe371fb0502f78b8ccbe1f45a030e31ecff6))

# [5.0.0-pre.0](https://github.com/feathersjs/feathers/compare/v4.5.4...v5.0.0-pre.0) (2020-05-19)

### Bug Fixes

- **errors:** Format package.json with spaces ([cbd31c1](https://github.com/feathersjs/feathers/commit/cbd31c10c2c574de63d6ca5e55dbfb73a5fdd758))

### chore

- **configuration:** Remove environment variable substitution ([#1942](https://github.com/feathersjs/feathers/issues/1942)) ([caaa21f](https://github.com/feathersjs/feathers/commit/caaa21ffdc6a8dcac82fb403c91d9d4b781a6c0a))
- **package:** Remove @feathersjs/primus packages from core ([#1919](https://github.com/feathersjs/feathers/issues/1919)) ([d20b7d5](https://github.com/feathersjs/feathers/commit/d20b7d5a70f4d3306e294696156e8aa0337c35e9)), closes [#1899](https://github.com/feathersjs/feathers/issues/1899)

### Features

- **core:** Migrate @feathersjs/feathers to TypeScript ([#1963](https://github.com/feathersjs/feathers/issues/1963)) ([7812529](https://github.com/feathersjs/feathers/commit/7812529ff0f1008e21211f1d01efbc49795dbe55))
- **core:** use @feathers/hooks and add async type ([#1929](https://github.com/feathersjs/feathers/issues/1929)) ([a5c4756](https://github.com/feathersjs/feathers/commit/a5c47562eae8410c82fe2f6308f26f8e78b6a3e8))
- **transport-commons:** Remove legacy message format and unnecessary client timeouts ([#1939](https://github.com/feathersjs/feathers/issues/1939)) ([5538881](https://github.com/feathersjs/feathers/commit/5538881a08bc130de42c5984055729d8336f8615))

### BREAKING CHANGES

- **configuration:** Falls back to node-config instead of adding additional
  functionality like path replacements and automatic environment variable insertion.
- **transport-commons:** Removes the old message format and client service timeout
- **package:** Remove primus packages to be moved into the ecosystem.

# [5.0.0-pre.0](https://github.com/feathersjs/feathers/compare/v4.5.4...v5.0.0-pre.0) (2020-05-19)

### Bug Fixes

- **authentication-oauth:** Updated typings for projects with strictNullChecks ([#1941](https://github.com/feathersjs/feathers/issues/1941)) ([be91206](https://github.com/feathersjs/feathers/commit/be91206e3dba1e65a81412b7aa636bece3ab4aa2))
- **errors:** Format package.json with spaces ([cbd31c1](https://github.com/feathersjs/feathers/commit/cbd31c10c2c574de63d6ca5e55dbfb73a5fdd758))

### chore

- **configuration:** Remove environment variable substitution ([#1942](https://github.com/feathersjs/feathers/issues/1942)) ([caaa21f](https://github.com/feathersjs/feathers/commit/caaa21ffdc6a8dcac82fb403c91d9d4b781a6c0a))
- **package:** Remove @feathersjs/primus packages from core ([#1919](https://github.com/feathersjs/feathers/issues/1919)) ([d20b7d5](https://github.com/feathersjs/feathers/commit/d20b7d5a70f4d3306e294696156e8aa0337c35e9)), closes [#1899](https://github.com/feathersjs/feathers/issues/1899)

### Features

- **core:** Migrate @feathersjs/feathers to TypeScript ([#1963](https://github.com/feathersjs/feathers/issues/1963)) ([7812529](https://github.com/feathersjs/feathers/commit/7812529ff0f1008e21211f1d01efbc49795dbe55))
- **core:** use @feathers/hooks and add async type ([#1929](https://github.com/feathersjs/feathers/issues/1929)) ([a5c4756](https://github.com/feathersjs/feathers/commit/a5c47562eae8410c82fe2f6308f26f8e78b6a3e8))
- **transport-commons:** Remove legacy message format and unnecessary client timeouts ([#1939](https://github.com/feathersjs/feathers/issues/1939)) ([5538881](https://github.com/feathersjs/feathers/commit/5538881a08bc130de42c5984055729d8336f8615))

### BREAKING CHANGES

- **configuration:** Falls back to node-config instead of adding additional
  functionality like path replacements and automatic environment variable insertion.
- **transport-commons:** Removes the old message format and client service timeout
- **package:** Remove primus packages to be moved into the ecosystem.

## [4.5.11](https://github.com/feathersjs/feathers/compare/v4.5.10...v4.5.11) (2020-12-05)

### Bug Fixes

- **authentication-client:** Allow reAuthentication using specific strategy ([#2140](https://github.com/feathersjs/feathers/issues/2140)) ([2a2bbf7](https://github.com/feathersjs/feathers/commit/2a2bbf7f8ee6d32b9fac8afab3421286b06e6443))
- **socketio-client:** Throw an error and show a warning if someone tries to use socket.io-client v3 ([#2135](https://github.com/feathersjs/feathers/issues/2135)) ([cc3521c](https://github.com/feathersjs/feathers/commit/cc3521c935a1cbd690e29b7057998e3898f282db))
- **typescript:** Fix `data` property definition in @feathersjs/errors ([#2018](https://github.com/feathersjs/feathers/issues/2018)) ([ef1398c](https://github.com/feathersjs/feathers/commit/ef1398cd5b19efa50929e8c9511ca5684a18997f))

## [4.5.10](https://github.com/feathersjs/feathers/compare/v4.5.9...v4.5.10) (2020-11-08)

### Bug Fixes

- **authentication:** consistent response return between local and jwt strategy ([#2042](https://github.com/feathersjs/feathers/issues/2042)) ([8d25be1](https://github.com/feathersjs/feathers/commit/8d25be101a2593a9e789375c928a07780b9e28cf))
- **authentication-oauth:** session.destroy is undefined when use cookie-session package ([#2100](https://github.com/feathersjs/feathers/issues/2100)) ([46e84b8](https://github.com/feathersjs/feathers/commit/46e84b83f2acce985380243fc6d08c64e96f0068))
- **package:** Fix clean script in non Unix environments ([#2110](https://github.com/feathersjs/feathers/issues/2110)) ([09b62c0](https://github.com/feathersjs/feathers/commit/09b62c0c7e636caf620904ba87d61f168a020f05))
- **typescript:** Add user property to the Params. ([#2090](https://github.com/feathersjs/feathers/issues/2090)) ([1e94265](https://github.com/feathersjs/feathers/commit/1e942651fbaaf07fc66c159225fbc992a0174bf4))

## [4.5.9](https://github.com/feathersjs/feathers/compare/v4.5.8...v4.5.9) (2020-10-09)

### Bug Fixes

- **authentication-local:** Keep non-objects in protect hook ([#2085](https://github.com/feathersjs/feathers/issues/2085)) ([5a65e2e](https://github.com/feathersjs/feathers/commit/5a65e2e6cee0a15614f23ee2e0d3c25d3365027d))
- **authentication-oauth:** Always end session after oAuth flows are finished ([#2087](https://github.com/feathersjs/feathers/issues/2087)) ([d219d0d](https://github.com/feathersjs/feathers/commit/d219d0d89c5e45aa289dd67cb0c8bdc05044c846))
- **configuration:** Fix handling of config values that start with . or .. but are not actually relative paths; e.g. ".foo" or "..bar" ([#2065](https://github.com/feathersjs/feathers/issues/2065)) ([d07bf59](https://github.com/feathersjs/feathers/commit/d07bf5902e9c8c606f16b9523472972d3d2e9b49))
- **rest-client:** Handle non-JSON errors with fetch adapter ([#2086](https://github.com/feathersjs/feathers/issues/2086)) ([e24217a](https://github.com/feathersjs/feathers/commit/e24217ad1e784ad71cd9d64fe1727dd02f039991))

## [4.5.8](https://github.com/feathersjs/feathers/compare/v4.5.7...v4.5.8) (2020-08-12)

- **authentication-client:** Fix storage type so it works with all supported interfaces ([#2041](https://github.com/feathersjs/feathers/issues/2041)) ([6ee0e78](https://github.com/feathersjs/feathers/commit/6ee0e78d55cf1214f61458f386b94c350eec32af))

## [4.5.7](https://github.com/feathersjs/feathers/compare/v4.5.6...v4.5.7) (2020-07-24)

### Bug Fixes

- **authentication:** Add JWT getEntityQuery ([#2013](https://github.com/feathersjs/feathers/issues/2013)) ([e0e7fb5](https://github.com/feathersjs/feathers/commit/e0e7fb5162940fe776731283b40026c61d9c8a33))
- **typescript:** Revert add overload types for `find` service methods ([#1972](https://github.com/feathersjs/feathers/issues/1972))" ([#2025](https://github.com/feathersjs/feathers/issues/2025)) ([a9501ac](https://github.com/feathersjs/feathers/commit/a9501acb4d3ef58dfb87d62c57a9bf76569da281))

## [4.5.6](https://github.com/feathersjs/feathers/compare/v4.5.5...v4.5.6) (2020-07-12)

### Bug Fixes

- **authentication:** Omit query in JWT strategy ([#2011](https://github.com/feathersjs/feathers/issues/2011)) ([04ce7e9](https://github.com/feathersjs/feathers/commit/04ce7e98515fe9d495cd0e83e0da097e9bcd7382))

## [4.5.5](https://github.com/feathersjs/feathers/compare/v4.5.4...v4.5.5) (2020-07-11)

### Bug Fixes

- **authentication:** Include query params when authenticating via authenticate hook [#2009](https://github.com/feathersjs/feathers/issues/2009) ([4cdb7bf](https://github.com/feathersjs/feathers/commit/4cdb7bf2898385ddac7a1692bc9ac2f6cf5ad446))
- **authentication-oauth:** Updated typings for projects with strictNullChecks ([#1941](https://github.com/feathersjs/feathers/issues/1941)) ([be91206](https://github.com/feathersjs/feathers/commit/be91206e3dba1e65a81412b7aa636bece3ab4aa2))
- **typescript:** add overload types for `find` service methods ([#1972](https://github.com/feathersjs/feathers/issues/1972)) ([ef55af0](https://github.com/feathersjs/feathers/commit/ef55af088d05d9d36aba9d9f8d6c2c908a4f20dd))

## [4.5.4](https://github.com/feathersjs/feathers/compare/v4.5.3...v4.5.4) (2020-04-29)

### Bug Fixes

- **authentication-local:** Allow to hash passwords in array data ([#1936](https://github.com/feathersjs/feathers/issues/1936)) ([64705f5](https://github.com/feathersjs/feathers/commit/64705f5d9d4dc27f799da3a074efaf74379a3398))
- **authentication-oauth:** Add getEntity method to oAuth authentication and remove provider field for other calls ([#1935](https://github.com/feathersjs/feathers/issues/1935)) ([d925c1b](https://github.com/feathersjs/feathers/commit/d925c1bd193b5c19cb23a246f04fc46d0429fc75))

## [4.5.3](https://github.com/feathersjs/feathers/compare/v4.5.2...v4.5.3) (2020-04-17)

### Bug Fixes

- **authentication:** Remove entity from connection information on logout ([#1889](https://github.com/feathersjs/feathers/issues/1889)) ([b062753](https://github.com/feathersjs/feathers/commit/b0627530d61babe15dd84369d3093ccae4b780ca))
- **authentication-oauth:** Allow req.feathers to be used in oAuth authentication requests ([#1886](https://github.com/feathersjs/feathers/issues/1886)) ([854c9ca](https://github.com/feathersjs/feathers/commit/854c9cac9a9a5f8f89054a90feb24ab5c4766f5f))
- **errors:** Add 410 Gone to errors ([#1849](https://github.com/feathersjs/feathers/issues/1849)) ([6801428](https://github.com/feathersjs/feathers/commit/6801428f8fd17dbfebcdb6f1b0cd01433a4033dc))
- **typescript:** Add type keys to service pagination options. ([#1888](https://github.com/feathersjs/feathers/issues/1888)) ([859c601](https://github.com/feathersjs/feathers/commit/859c601519c7cb399e8b1667bb50073466812d5c))
- **typescript:** Use stricter type for HookContext 'method' prop ([#1896](https://github.com/feathersjs/feathers/issues/1896)) ([24a41b7](https://github.com/feathersjs/feathers/commit/24a41b74486ddadccad18f3ae63afdac5bd373c7))

## [4.5.2](https://github.com/feathersjs/feathers/compare/v4.5.1...v4.5.2) (2020-03-04)

### Bug Fixes

- Updated typings for express middleware ([#1839](https://github.com/feathersjs/feathers/issues/1839)) ([6b8e897](https://github.com/feathersjs/feathers/commit/6b8e8971a9dbb08913edd1be48826624645d9dc1))
- **authentication:** Improve JWT strategy configuration error message ([#1844](https://github.com/feathersjs/feathers/issues/1844)) ([2c771db](https://github.com/feathersjs/feathers/commit/2c771dbb22d53d4f7de3c3f514e57afa1a186322))
- **package:** update grant-profile to version 0.0.11 ([#1841](https://github.com/feathersjs/feathers/issues/1841)) ([5dcd2aa](https://github.com/feathersjs/feathers/commit/5dcd2aa3483059cc7a2546b145dd72b4705fe2fe))
- **test:** typo in password ([#1797](https://github.com/feathersjs/feathers/issues/1797)) ([dfba6ec](https://github.com/feathersjs/feathers/commit/dfba6ec2f21adf3aa739218cf870eaaaa5df6e9c))
- **typescript:** Make HookMap and HookObject generics. ([#1815](https://github.com/feathersjs/feathers/issues/1815)) ([d10145d](https://github.com/feathersjs/feathers/commit/d10145d91a09aef7bce5af80805a3c0fa9d94f26))

## [4.5.1](https://github.com/feathersjs/feathers/compare/v4.5.0...v4.5.1) (2020-01-24)

**Note:** Version bump only for package feathers

# [4.5.0](https://github.com/feathersjs/feathers/compare/v4.4.3...v4.5.0) (2020-01-18)

### Bug Fixes

- Add `params.authentication` type, remove `hook.connection` type ([#1732](https://github.com/feathersjs/feathers/issues/1732)) ([d46b7b2](https://github.com/feathersjs/feathers/commit/d46b7b2abac8862c0e4dbfce20d71b8b8a96692f))

### Features

- **authentication-oauth:** Set oAuth redirect URL dynamically and pass query the service ([#1737](https://github.com/feathersjs/feathers/issues/1737)) ([0b05f0b](https://github.com/feathersjs/feathers/commit/0b05f0b58a257820fa61d695a36f36455209f6a1))
- **rest-client:** Allow for customising rest clients ([#1780](https://github.com/feathersjs/feathers/issues/1780)) ([c5cfec7](https://github.com/feathersjs/feathers/commit/c5cfec7a4aafcaffaab0cdacb9b5d297ff20320f))

## [4.4.3](https://github.com/feathersjs/feathers/compare/v4.4.1...v4.4.3) (2019-12-06)

### Bug Fixes

- **adapter-commons:** Filter arrays in queries ([#1724](https://github.com/feathersjs/feathers/issues/1724)) ([872b669](https://github.com/feathersjs/feathers/commit/872b66906a806ab92ca41b5f6f504ff0af1ce79e))

## [4.4.1](https://github.com/feathersjs/feathers/compare/v4.4.0...v4.4.1) (2019-11-27)

### Bug Fixes

- Gracefully handle errors in publishers ([#1710](https://github.com/feathersjs/feathers/issues/1710)) ([0616306](https://github.com/feathersjs/feathers/commit/061630696762e9dbf1dc4e738094992ba16989fc))

# [4.4.0](https://github.com/feathersjs/feathers/compare/v4.3.11...v4.4.0) (2019-11-27)

### Bug Fixes

- **authentication-client:** Reset authentication promise on socket disconnect ([#1696](https://github.com/feathersjs/feathers/issues/1696)) ([3951626](https://github.com/feathersjs/feathers/commit/395162633ff22e95833a3c2900cb9464bb5b056f))
- **core:** Improve hook missing parameter message by adding the service name ([#1703](https://github.com/feathersjs/feathers/issues/1703)) ([2331c2a](https://github.com/feathersjs/feathers/commit/2331c2a3dd70d432db7d62a76ed805d359cbbba5))
- **rest-client:** Allow to customize getting the query ([#1594](https://github.com/feathersjs/feathers/issues/1594)) ([5f21272](https://github.com/feathersjs/feathers/commit/5f212729849414c4da6f0d51edd1986feca992ee))
- **transport-commons:** Allow to properly chain SocketIo client.off ([#1706](https://github.com/feathersjs/feathers/issues/1706)) ([a4aecbc](https://github.com/feathersjs/feathers/commit/a4aecbcd3578c1cf4ecffb3a58fb6d26e15ee513))
- **typescript:** Allow specific service typings for `Hook` and `HookContext` ([#1688](https://github.com/feathersjs/feathers/issues/1688)) ([f5d0ddd](https://github.com/feathersjs/feathers/commit/f5d0ddd9724bf5778355535d2103d59daaad6294))

### Features

- **authentication:** Add parseStrategies to allow separate strategies for creating JWTs and parsing headers ([#1708](https://github.com/feathersjs/feathers/issues/1708)) ([5e65629](https://github.com/feathersjs/feathers/commit/5e65629b924724c3e81d7c81df047e123d1c8bd7))
- **authentication-oauth:** Set oAuth redirect URL dynamically ([#1608](https://github.com/feathersjs/feathers/issues/1608)) ([1293e08](https://github.com/feathersjs/feathers/commit/1293e088abbb3d23f4a44680836645a8049ceaae))

## [4.3.11](https://github.com/feathersjs/feathers/compare/v4.3.10...v4.3.11) (2019-11-11)

### Bug Fixes

- **authentication:** Retain object references in authenticate hook ([#1675](https://github.com/feathersjs/feathers/issues/1675)) ([e1939be](https://github.com/feathersjs/feathers/commit/e1939be19d4e79d3f5e2fe69ba894a11c627ae99))
- **authentication-oauth:** Allow hash based redirects ([#1676](https://github.com/feathersjs/feathers/issues/1676)) ([ffe7cf3](https://github.com/feathersjs/feathers/commit/ffe7cf3fbb4e62d7689065cf7b61f25f602ce8cf))

## [4.3.10](https://github.com/feathersjs/feathers/compare/v4.3.9...v4.3.10) (2019-10-26)

**Note:** Version bump only for package feathers

## [4.3.9](https://github.com/feathersjs/feathers/compare/v4.3.8...v4.3.9) (2019-10-26)

### Bug Fixes

- Add jsonwebtoken TypeScript type dependency ([317c80a](https://github.com/feathersjs/feathers/commit/317c80a9205e8853bb830a12c3aa1a19e95f9abc))
- Only initialize default Express session if oAuth is actually used ([#1648](https://github.com/feathersjs/feathers/issues/1648)) ([9b9b43f](https://github.com/feathersjs/feathers/commit/9b9b43ff09af1080e4aaa537064bac37b881c9a2))
- Small type improvements ([#1624](https://github.com/feathersjs/feathers/issues/1624)) ([50162c6](https://github.com/feathersjs/feathers/commit/50162c6e562f0a47c6a280c4f01fff7c3afee293))

## [4.3.8](https://github.com/feathersjs/feathers/compare/v4.3.7...v4.3.8) (2019-10-14)

### Bug Fixes

- Remove adapter commons type alternatives ([#1620](https://github.com/feathersjs/feathers/issues/1620)) ([c9f3086](https://github.com/feathersjs/feathers/commit/c9f3086344420b57dbce7c4169cf550c97509f0d))

## [4.3.7](https://github.com/feathersjs/feathers/compare/v4.3.6...v4.3.7) (2019-10-14)

### Bug Fixes

- Improve authentication client default storage initialization ([#1613](https://github.com/feathersjs/feathers/issues/1613)) ([d7f5107](https://github.com/feathersjs/feathers/commit/d7f5107ef76297b4ca6db580afc5e2b372f5ee4d))
- improve Service and AdapterService types ([#1567](https://github.com/feathersjs/feathers/issues/1567)) ([baad6a2](https://github.com/feathersjs/feathers/commit/baad6a26f0f543b712ccb40359b3933ad3a21392))
- make \_\_hooks writable and configurable ([#1520](https://github.com/feathersjs/feathers/issues/1520)) ([1c6c374](https://github.com/feathersjs/feathers/commit/1c6c3742ecf1cb813be56074da89e6736d03ffe8))
- Typings for express request and response properties ([#1609](https://github.com/feathersjs/feathers/issues/1609)) ([38cf8c9](https://github.com/feathersjs/feathers/commit/38cf8c950c1a4fb4a6d78d68d70e7fdd63b71c3c))

## [4.3.6](https://github.com/feathersjs/feathers/compare/v4.3.5...v4.3.6) (2019-10-07)

### Bug Fixes

- Check query for NaN ([#1607](https://github.com/feathersjs/feathers/issues/1607)) ([f1a781f](https://github.com/feathersjs/feathers/commit/f1a781f))

## [4.3.5](https://github.com/feathersjs/feathers/compare/v4.3.4...v4.3.5) (2019-10-07)

### Bug Fixes

- Authentication type improvements and timeout fix ([#1605](https://github.com/feathersjs/feathers/issues/1605)) ([19854d3](https://github.com/feathersjs/feathers/commit/19854d3))
- Change this reference in client libraries to explicitly passed app ([#1597](https://github.com/feathersjs/feathers/issues/1597)) ([4e4d10a](https://github.com/feathersjs/feathers/commit/4e4d10a))
- Improve error message when authentication strategy is not allowed ([#1600](https://github.com/feathersjs/feathers/issues/1600)) ([317a312](https://github.com/feathersjs/feathers/commit/317a312))

## [4.3.4](https://github.com/feathersjs/feathers/compare/v4.3.3...v4.3.4) (2019-10-03)

### Bug Fixes

- Reset version number after every publish ([#1596](https://github.com/feathersjs/feathers/issues/1596)) ([f24f82f](https://github.com/feathersjs/feathers/commit/f24f82f))
- Typing improvements ([#1580](https://github.com/feathersjs/feathers/issues/1580)) ([7818aec](https://github.com/feathersjs/feathers/commit/7818aec))

## [4.3.3](https://github.com/feathersjs/feathers/compare/v4.3.2...v4.3.3) (2019-09-21)

### Bug Fixes

- check for undefined access token ([#1571](https://github.com/feathersjs/feathers/issues/1571)) ([976369d](https://github.com/feathersjs/feathers/commit/976369d))
- Small improvements in dependencies and code structure ([#1562](https://github.com/feathersjs/feathers/issues/1562)) ([42c13e2](https://github.com/feathersjs/feathers/commit/42c13e2))

## [4.3.2](https://github.com/feathersjs/feathers/compare/v4.3.1...v4.3.2) (2019-09-16)

### Bug Fixes

- Add info to express error handler logger type ([#1557](https://github.com/feathersjs/feathers/issues/1557)) ([3e1d26c](https://github.com/feathersjs/feathers/commit/3e1d26c))
- LocalStrategy authenticates without username ([#1560](https://github.com/feathersjs/feathers/issues/1560)) ([2b258fd](https://github.com/feathersjs/feathers/commit/2b258fd)), closes [#1559](https://github.com/feathersjs/feathers/issues/1559)

## [4.3.1](https://github.com/feathersjs/feathers/compare/v4.3.0...v4.3.1) (2019-09-09)

### Bug Fixes

- Fix regression in transport commons ([#1551](https://github.com/feathersjs/feathers/issues/1551)) ([ed9e934](https://github.com/feathersjs/feathers/commit/ed9e934))
- Omit standard protocol ports from the default hostname ([#1543](https://github.com/feathersjs/feathers/issues/1543)) ([ef16d29](https://github.com/feathersjs/feathers/commit/ef16d29))
- Use long-timeout for JWT expiration timers ([#1552](https://github.com/feathersjs/feathers/issues/1552)) ([65637ec](https://github.com/feathersjs/feathers/commit/65637ec))

# [4.3.0](https://github.com/feathersjs/feathers/compare/v4.3.0-pre.4...v4.3.0) (2019-08-27)

### Bug Fixes

- Only remove token on NotAuthenticated error in authentication client and handle error better ([#1525](https://github.com/feathersjs/feathers/issues/1525)) ([13a8758](https://github.com/feathersjs/feathers/commit/13a8758))

# [4.3.0-pre.4](https://github.com/feathersjs/feathers/compare/v4.3.0-pre.3...v4.3.0-pre.4) (2019-08-22)

### Bug Fixes

- Fix auth publisher mistake ([08bad61](https://github.com/feathersjs/feathers/commit/08bad61))

# [4.3.0-pre.3](https://github.com/feathersjs/feathers/compare/v4.3.0-pre.2...v4.3.0-pre.3) (2019-08-19)

### Bug Fixes

- Expire and remove authenticated real-time connections ([#1512](https://github.com/feathersjs/feathers/issues/1512)) ([2707c33](https://github.com/feathersjs/feathers/commit/2707c33))
- Update all dependencies ([7d53a00](https://github.com/feathersjs/feathers/commit/7d53a00))
- Use WeakMap to connect socket to connection ([#1509](https://github.com/feathersjs/feathers/issues/1509)) ([64807e3](https://github.com/feathersjs/feathers/commit/64807e3))

### Features

- Let strategies handle the connection ([#1510](https://github.com/feathersjs/feathers/issues/1510)) ([4329feb](https://github.com/feathersjs/feathers/commit/4329feb))

# [4.3.0-pre.2](https://github.com/feathersjs/feathers/compare/v4.3.0-pre.1...v4.3.0-pre.2) (2019-08-02)

### Bug Fixes

- @feathersjs/adapter-commons: `update` id is non-nullable ([#1468](https://github.com/feathersjs/feathers/issues/1468)) ([43ec802](https://github.com/feathersjs/feathers/commit/43ec802))
- Add getEntityId to JWT strategy and fix legacy Socket authentication ([#1488](https://github.com/feathersjs/feathers/issues/1488)) ([9a3b324](https://github.com/feathersjs/feathers/commit/9a3b324))
- Add method to reliably get default authentication service ([#1470](https://github.com/feathersjs/feathers/issues/1470)) ([e542cb3](https://github.com/feathersjs/feathers/commit/e542cb3))
- Do not error in authentication client on logout ([#1473](https://github.com/feathersjs/feathers/issues/1473)) ([8211b98](https://github.com/feathersjs/feathers/commit/8211b98))
- Improve Params typing ([#1474](https://github.com/feathersjs/feathers/issues/1474)) ([54a3aa7](https://github.com/feathersjs/feathers/commit/54a3aa7))

# [4.3.0-pre.1](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.5...v4.3.0-pre.1) (2019-07-11)

**Note:** Version bump only for package feathers

# [4.0.0-pre.5](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.4...v4.0.0-pre.5) (2019-07-10)

### Bug Fixes

- Fix feathers-memory dependency that did not get updated ([9422b13](https://github.com/feathersjs/feathers/commit/9422b13))
- Remove unnecessary top level export files in @feathersjs/express ([#1442](https://github.com/feathersjs/feathers/issues/1442)) ([73c3fb2](https://github.com/feathersjs/feathers/commit/73c3fb2))

### Features

- @feathersjs/express allow to pass an existing Express application instance ([#1446](https://github.com/feathersjs/feathers/issues/1446)) ([853a6b0](https://github.com/feathersjs/feathers/commit/853a6b0))

# [4.0.0-pre.4](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.3...v4.0.0-pre.4) (2019-07-05)

### Bug Fixes

- @feathersjs/adapter-commons: remove data from `remove` arguments ([#1426](https://github.com/feathersjs/feathers/issues/1426)) ([fd54ae9](https://github.com/feathersjs/feathers/commit/fd54ae9))
- @feathersjs/express: allow middleware arrays ([#1421](https://github.com/feathersjs/feathers/issues/1421)) ([b605ab8](https://github.com/feathersjs/feathers/commit/b605ab8))
- @feathersjs/express: replace `reduce` with `map` ([#1429](https://github.com/feathersjs/feathers/issues/1429)) ([44542e9](https://github.com/feathersjs/feathers/commit/44542e9))
- Clean up hooks code ([#1407](https://github.com/feathersjs/feathers/issues/1407)) ([f25c88b](https://github.com/feathersjs/feathers/commit/f25c88b))
- Fix @feathersjs/feathers typings http import ([abbc07b](https://github.com/feathersjs/feathers/commit/abbc07b))
- Fix OpenCollective link ([28888a1](https://github.com/feathersjs/feathers/commit/28888a1))
- Improve transport-commons types ([#1396](https://github.com/feathersjs/feathers/issues/1396)) ([f9d8536](https://github.com/feathersjs/feathers/commit/f9d8536))
- Updated typings for ServiceMethods ([#1409](https://github.com/feathersjs/feathers/issues/1409)) ([b5ee7e2](https://github.com/feathersjs/feathers/commit/b5ee7e2))

### Features

- adapter-commons: add `allowsMulti(method)` to AdapterService ([#1431](https://github.com/feathersjs/feathers/issues/1431)) ([e688851](https://github.com/feathersjs/feathers/commit/e688851))
- Add hook-less methods and service option types to adapter-commons ([#1433](https://github.com/feathersjs/feathers/issues/1433)) ([857f54a](https://github.com/feathersjs/feathers/commit/857f54a))

# [4.0.0-pre.3](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.2...v4.0.0-pre.3) (2019-06-01)

### Bug Fixes

- Make oAuth paths more consistent and improve authentication client ([#1377](https://github.com/feathersjs/feathers/issues/1377)) ([adb2543](https://github.com/feathersjs/feathers/commit/adb2543))
- Set authenticated: true after successful authentication ([#1367](https://github.com/feathersjs/feathers/issues/1367)) ([9918cff](https://github.com/feathersjs/feathers/commit/9918cff))
- Typings fix and improvements. ([#1364](https://github.com/feathersjs/feathers/issues/1364)) ([515b916](https://github.com/feathersjs/feathers/commit/515b916))
- Update dependencies and fix tests ([#1373](https://github.com/feathersjs/feathers/issues/1373)) ([d743a7f](https://github.com/feathersjs/feathers/commit/d743a7f))

# [4.0.0-pre.2](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.1...v4.0.0-pre.2) (2019-05-15)

### Bug Fixes

- Throw NotAuthenticated on token verification errors ([#1357](https://github.com/feathersjs/feathers/issues/1357)) ([e0120df](https://github.com/feathersjs/feathers/commit/e0120df))
- **typescript:** finally should be optional ([#1350](https://github.com/feathersjs/feathers/issues/1350)) ([f439a9e](https://github.com/feathersjs/feathers/commit/f439a9e))
- Add fallback for legacy socket authenticate event ([#1356](https://github.com/feathersjs/feathers/issues/1356)) ([61b1056](https://github.com/feathersjs/feathers/commit/61b1056))
- Correctly read the oauth strategy config ([#1349](https://github.com/feathersjs/feathers/issues/1349)) ([9abf314](https://github.com/feathersjs/feathers/commit/9abf314))
- Fix versioning tests. Closes [#1346](https://github.com/feathersjs/feathers/issues/1346) ([dd519f6](https://github.com/feathersjs/feathers/commit/dd519f6))
- Use `export =` in TypeScript definitions ([#1285](https://github.com/feathersjs/feathers/issues/1285)) ([12d0f4b](https://github.com/feathersjs/feathers/commit/12d0f4b))

### Features

- Add global disconnect event ([#1355](https://github.com/feathersjs/feathers/issues/1355)) ([85afcca](https://github.com/feathersjs/feathers/commit/85afcca))

# [4.0.0-pre.1](https://github.com/feathersjs/feathers/compare/v4.0.0-pre.0...v4.0.0-pre.1) (2019-05-08)

### Bug Fixes

- Add registerPublisher alias for .publish ([#1302](https://github.com/feathersjs/feathers/issues/1302)) ([98fe8f8](https://github.com/feathersjs/feathers/commit/98fe8f8))
- Always require strategy parameter in authentication ([#1327](https://github.com/feathersjs/feathers/issues/1327)) ([d4a8021](https://github.com/feathersjs/feathers/commit/d4a8021))
- Bring back params.authenticated ([#1317](https://github.com/feathersjs/feathers/issues/1317)) ([a0ffd5e](https://github.com/feathersjs/feathers/commit/a0ffd5e))
- Do not log as errors below a 500 response ([#1256](https://github.com/feathersjs/feathers/issues/1256)) ([33fd0e4](https://github.com/feathersjs/feathers/commit/33fd0e4))
- Guard against null in client side logout function ([#1319](https://github.com/feathersjs/feathers/issues/1319)) ([fa7f057](https://github.com/feathersjs/feathers/commit/fa7f057))
- Handle error oAuth redirect in authentication client ([#1307](https://github.com/feathersjs/feathers/issues/1307)) ([12d48ee](https://github.com/feathersjs/feathers/commit/12d48ee))
- Improve authentication parameter handling ([#1333](https://github.com/feathersjs/feathers/issues/1333)) ([6e77204](https://github.com/feathersjs/feathers/commit/6e77204))
- Improve oAuth option handling and usability ([#1335](https://github.com/feathersjs/feathers/issues/1335)) ([adb137d](https://github.com/feathersjs/feathers/commit/adb137d))
- Merge httpStrategies and authStrategies option ([#1308](https://github.com/feathersjs/feathers/issues/1308)) ([afa4d55](https://github.com/feathersjs/feathers/commit/afa4d55))
- Rename jwtStrategies option to authStrategies ([#1305](https://github.com/feathersjs/feathers/issues/1305)) ([4aee151](https://github.com/feathersjs/feathers/commit/4aee151))
- Update version number check ([53575c5](https://github.com/feathersjs/feathers/commit/53575c5))
- Updated HooksObject typings ([#1300](https://github.com/feathersjs/feathers/issues/1300)) ([b28058c](https://github.com/feathersjs/feathers/commit/b28058c))

### Features

- Add params.headers to all transports when available ([#1303](https://github.com/feathersjs/feathers/issues/1303)) ([ebce79b](https://github.com/feathersjs/feathers/commit/ebce79b))
- Change and *JWT methods to *accessToken ([#1304](https://github.com/feathersjs/feathers/issues/1304)) ([5ac826b](https://github.com/feathersjs/feathers/commit/5ac826b))
- express use service.methods ([#945](https://github.com/feathersjs/feathers/issues/945)) ([3f0b1c3](https://github.com/feathersjs/feathers/commit/3f0b1c3))

# [4.0.0-pre.0](https://github.com/feathersjs/feathers/compare/v3.2.0-pre.1...v4.0.0-pre.0) (2019-04-21)

### Bug Fixes

- Add test to make sure different id in adapter query works ([#1165](https://github.com/feathersjs/feathers/issues/1165)) ([0ba4580](https://github.com/feathersjs/feathers/commit/0ba4580))
- Add whitelist and filter support to common adapter service ([#1132](https://github.com/feathersjs/feathers/issues/1132)) ([df1daaa](https://github.com/feathersjs/feathers/commit/df1daaa))
- Added path and method in to express request for passport ([#1112](https://github.com/feathersjs/feathers/issues/1112)) ([afa1cb4](https://github.com/feathersjs/feathers/commit/afa1cb4))
- Authentication core improvements ([#1260](https://github.com/feathersjs/feathers/issues/1260)) ([c5dc7a2](https://github.com/feathersjs/feathers/commit/c5dc7a2))
- Catch connection initialization errors ([#1043](https://github.com/feathersjs/feathers/issues/1043)) ([4f9acd6](https://github.com/feathersjs/feathers/commit/4f9acd6))
- Compare socket event data using lodash's isEqual instead of indexOf ([#1061](https://github.com/feathersjs/feathers/issues/1061)) ([f706db3](https://github.com/feathersjs/feathers/commit/f706db3))
- Do not inherit app object from Object prototype ([#1153](https://github.com/feathersjs/feathers/issues/1153)) ([ed8c2e4](https://github.com/feathersjs/feathers/commit/ed8c2e4))
- Fix AdapterService multi option when set to true ([#1134](https://github.com/feathersjs/feathers/issues/1134)) ([40402fc](https://github.com/feathersjs/feathers/commit/40402fc))
- Improve JWT authentication option handling ([#1261](https://github.com/feathersjs/feathers/issues/1261)) ([31b956b](https://github.com/feathersjs/feathers/commit/31b956b))
- make codeclimate conform to rule of three ([#1076](https://github.com/feathersjs/feathers/issues/1076)) ([0a2ce87](https://github.com/feathersjs/feathers/commit/0a2ce87))
- Make Mocha a proper devDependency for every repository ([#1053](https://github.com/feathersjs/feathers/issues/1053)) ([9974803](https://github.com/feathersjs/feathers/commit/9974803))
- More robust parsing of mongodb connection string. Use new url parser. ([#1002](https://github.com/feathersjs/feathers/issues/1002)) ([74b31df](https://github.com/feathersjs/feathers/commit/74b31df))
- Normalize params to object even when it is falsy ([#1012](https://github.com/feathersjs/feathers/issues/1012)) ([af97818](https://github.com/feathersjs/feathers/commit/af97818))
- Only merge authenticated property on update ([8a564f7](https://github.com/feathersjs/feathers/commit/8a564f7))
- reduce authentication connection hook complexity and remove unnecessary checks ([fa94b2f](https://github.com/feathersjs/feathers/commit/fa94b2f))
- support a secretProvider ([#1063](https://github.com/feathersjs/feathers/issues/1063)) ([9da26ad](https://github.com/feathersjs/feathers/commit/9da26ad))
- Support Logger swallowing ([#995](https://github.com/feathersjs/feathers/issues/995)) ([5b3b37e](https://github.com/feathersjs/feathers/commit/5b3b37e)), closes [/github.com/feathersjs/generator-feathers/pull/392#issuecomment-420408312](https://github.com//github.com/feathersjs/generator-feathers/pull/392/issues/issuecomment-420408312)
- Throw error in `filterQuery` when query parameter is unknown ([#1131](https://github.com/feathersjs/feathers/issues/1131)) ([cd1a183](https://github.com/feathersjs/feathers/commit/cd1a183))
- Update 401.html ([#983](https://github.com/feathersjs/feathers/issues/983)) ([cec6bae](https://github.com/feathersjs/feathers/commit/cec6bae))
- Update 404.html ([#984](https://github.com/feathersjs/feathers/issues/984)) ([72132d1](https://github.com/feathersjs/feathers/commit/72132d1))
- Update adapter common tests ([#1135](https://github.com/feathersjs/feathers/issues/1135)) ([8166dda](https://github.com/feathersjs/feathers/commit/8166dda))
- Update adapter common tests to check for falsy ([#1140](https://github.com/feathersjs/feathers/issues/1140)) ([2856722](https://github.com/feathersjs/feathers/commit/2856722))
- Update adapter tests to not rely on error instance ([#1202](https://github.com/feathersjs/feathers/issues/1202)) ([6885e0e](https://github.com/feathersjs/feathers/commit/6885e0e))
- Update all dependencies to latest ([#1206](https://github.com/feathersjs/feathers/issues/1206)) ([e51e0f6](https://github.com/feathersjs/feathers/commit/e51e0f6))
- **adapter-commons:** Keep Symbols when filtering a query ([#1141](https://github.com/feathersjs/feathers/issues/1141)) ([c9f55d8](https://github.com/feathersjs/feathers/commit/c9f55d8))
- **authentication:** Fall back when req.app is not the application when emitting events ([#1185](https://github.com/feathersjs/feathers/issues/1185)) ([6a534f0](https://github.com/feathersjs/feathers/commit/6a534f0))
- **chore:** Add .npmignore to adapter-commons ([8e129d8](https://github.com/feathersjs/feathers/commit/8e129d8))
- **chore:** Properly configure and run code linter ([#1092](https://github.com/feathersjs/feathers/issues/1092)) ([fd3fc34](https://github.com/feathersjs/feathers/commit/fd3fc34))
- **chore:** Remove CLI and generators that belong in their own repositories ([#1091](https://github.com/feathersjs/feathers/issues/1091)) ([e894ac8](https://github.com/feathersjs/feathers/commit/e894ac8))
- **compile-task:** on windows machine ([#60](https://github.com/feathersjs/feathers/issues/60)) ([617e0a4](https://github.com/feathersjs/feathers/commit/617e0a4))
- **docs/new-features:** syntax highlighting ([#347](https://github.com/feathersjs/feathers/issues/347)) ([4ab7c95](https://github.com/feathersjs/feathers/commit/4ab7c95))
- **knex:** Fix knex + sql server issues when using authentication generator ([#257](https://github.com/feathersjs/feathers/issues/257)) ([8f8f75f](https://github.com/feathersjs/feathers/commit/8f8f75f))
- **package:** update @feathersjs/commons to version 2.0.0 ([#31](https://github.com/feathersjs/feathers/issues/31)) ([c1ef5b1](https://github.com/feathersjs/feathers/commit/c1ef5b1))
- **package:** update @feathersjs/commons to version 2.0.0 ([#692](https://github.com/feathersjs/feathers/issues/692)) ([ca665ab](https://github.com/feathersjs/feathers/commit/ca665ab))
- **package:** update config to version 3.0.0 ([#1100](https://github.com/feathersjs/feathers/issues/1100)) ([c9f4b42](https://github.com/feathersjs/feathers/commit/c9f4b42))
- use minimal RegExp matching for better performance ([#977](https://github.com/feathersjs/feathers/issues/977)) ([3ca7e97](https://github.com/feathersjs/feathers/commit/3ca7e97))
- **package:** update @feathersjs/commons to version 2.0.0 ([#45](https://github.com/feathersjs/feathers/issues/45)) ([9e82595](https://github.com/feathersjs/feathers/commit/9e82595))
- **package:** update @feathersjs/commons to version 2.0.0 ([#84](https://github.com/feathersjs/feathers/issues/84)) ([78ed39c](https://github.com/feathersjs/feathers/commit/78ed39c))
- **package:** update debug to version 3.0.0 ([#2](https://github.com/feathersjs/feathers/issues/2)) ([7e19603](https://github.com/feathersjs/feathers/commit/7e19603))
- **package:** update debug to version 3.0.0 ([#22](https://github.com/feathersjs/feathers/issues/22)) ([0b62606](https://github.com/feathersjs/feathers/commit/0b62606))
- **package:** update debug to version 3.0.0 ([#30](https://github.com/feathersjs/feathers/issues/30)) ([baf7a00](https://github.com/feathersjs/feathers/commit/baf7a00))
- **package:** update debug to version 3.0.0 ([#31](https://github.com/feathersjs/feathers/issues/31)) ([902ddf5](https://github.com/feathersjs/feathers/commit/902ddf5))
- **package:** update debug to version 3.0.0 ([#31](https://github.com/feathersjs/feathers/issues/31)) ([f23d617](https://github.com/feathersjs/feathers/commit/f23d617))
- **package:** update debug to version 3.0.0 ([#45](https://github.com/feathersjs/feathers/issues/45)) ([2391434](https://github.com/feathersjs/feathers/commit/2391434))
- **package:** update debug to version 3.0.0 ([#45](https://github.com/feathersjs/feathers/issues/45)) ([9b9bde5](https://github.com/feathersjs/feathers/commit/9b9bde5))
- **package:** update debug to version 3.0.0 ([#555](https://github.com/feathersjs/feathers/issues/555)) ([f788804](https://github.com/feathersjs/feathers/commit/f788804))
- **package:** update debug to version 3.0.0 ([#59](https://github.com/feathersjs/feathers/issues/59)) ([fedcf06](https://github.com/feathersjs/feathers/commit/fedcf06))
- **package:** update debug to version 3.0.0 ([#61](https://github.com/feathersjs/feathers/issues/61)) ([6f5009c](https://github.com/feathersjs/feathers/commit/6f5009c))
- **package:** update debug to version 3.0.0 ([#83](https://github.com/feathersjs/feathers/issues/83)) ([49f1de9](https://github.com/feathersjs/feathers/commit/49f1de9))
- **package:** update debug to version 3.0.0 ([#86](https://github.com/feathersjs/feathers/issues/86)) ([fd1bb6b](https://github.com/feathersjs/feathers/commit/fd1bb6b))
- **package:** update debug to version 3.0.1 ([#46](https://github.com/feathersjs/feathers/issues/46)) ([f8ada69](https://github.com/feathersjs/feathers/commit/f8ada69))
- **package:** update generator-feathers to version 1.0.3 ([#81](https://github.com/feathersjs/feathers/issues/81)) ([0c66bc5](https://github.com/feathersjs/feathers/commit/0c66bc5))
- **package:** update generator-feathers to version 1.0.5 ([#83](https://github.com/feathersjs/feathers/issues/83)) ([229caba](https://github.com/feathersjs/feathers/commit/229caba))
- **package:** update generator-feathers to version 1.0.6 ([#86](https://github.com/feathersjs/feathers/issues/86)) ([7ae8e56](https://github.com/feathersjs/feathers/commit/7ae8e56))
- **package:** update generator-feathers to version 1.1.0 ([#93](https://github.com/feathersjs/feathers/issues/93)) ([f393e4c](https://github.com/feathersjs/feathers/commit/f393e4c))
- **package:** update generator-feathers to version 1.1.1 ([#95](https://github.com/feathersjs/feathers/issues/95)) ([3279ba9](https://github.com/feathersjs/feathers/commit/3279ba9))
- **package:** update generator-feathers to version 1.2.0 ([#96](https://github.com/feathersjs/feathers/issues/96)) ([8eb5674](https://github.com/feathersjs/feathers/commit/8eb5674))
- **package:** update generator-feathers to version 1.2.10 ([#115](https://github.com/feathersjs/feathers/issues/115)) ([c1db2b2](https://github.com/feathersjs/feathers/commit/c1db2b2))
- **package:** update generator-feathers to version 1.2.11 ([#116](https://github.com/feathersjs/feathers/issues/116)) ([bba6550](https://github.com/feathersjs/feathers/commit/bba6550))
- **package:** update generator-feathers to version 1.2.12 ([#119](https://github.com/feathersjs/feathers/issues/119)) ([e5c737d](https://github.com/feathersjs/feathers/commit/e5c737d))
- **package:** update generator-feathers to version 1.2.2 ([#98](https://github.com/feathersjs/feathers/issues/98)) ([ee629e3](https://github.com/feathersjs/feathers/commit/ee629e3)), closes [#97](https://github.com/feathersjs/feathers/issues/97)
- **package:** update generator-feathers to version 1.2.3 ([#99](https://github.com/feathersjs/feathers/issues/99)) ([b6cf361](https://github.com/feathersjs/feathers/commit/b6cf361))
- **package:** update generator-feathers to version 1.2.4 ([#101](https://github.com/feathersjs/feathers/issues/101)) ([2182fef](https://github.com/feathersjs/feathers/commit/2182fef))
- **package:** update generator-feathers to version 1.2.5 ([#104](https://github.com/feathersjs/feathers/issues/104)) ([295f6aa](https://github.com/feathersjs/feathers/commit/295f6aa))
- **package:** update generator-feathers to version 1.2.6 ([#106](https://github.com/feathersjs/feathers/issues/106)) ([66125dc](https://github.com/feathersjs/feathers/commit/66125dc))
- **package:** update generator-feathers to version 1.2.9 ([#110](https://github.com/feathersjs/feathers/issues/110)) ([17e55dc](https://github.com/feathersjs/feathers/commit/17e55dc))
- **package:** update generator-feathers to version 2.0.0 ([#126](https://github.com/feathersjs/feathers/issues/126)) ([eff6627](https://github.com/feathersjs/feathers/commit/eff6627))
- **package:** update generator-feathers to version 2.1.0 ([#128](https://github.com/feathersjs/feathers/issues/128)) ([b712355](https://github.com/feathersjs/feathers/commit/b712355))
- **package:** update generator-feathers to version 2.1.1 ([#129](https://github.com/feathersjs/feathers/issues/129)) ([1f91c0b](https://github.com/feathersjs/feathers/commit/1f91c0b))
- **package:** update generator-feathers to version 2.2.0 ([#130](https://github.com/feathersjs/feathers/issues/130)) ([308ad0b](https://github.com/feathersjs/feathers/commit/308ad0b))
- **package:** update generator-feathers to version 2.3.0 ([#131](https://github.com/feathersjs/feathers/issues/131)) ([7894807](https://github.com/feathersjs/feathers/commit/7894807))
- **package:** update generator-feathers to version 2.3.1 ([#132](https://github.com/feathersjs/feathers/issues/132)) ([c3e3187](https://github.com/feathersjs/feathers/commit/c3e3187))
- **package:** update generator-feathers to version 2.4.0 ([#137](https://github.com/feathersjs/feathers/issues/137)) ([1645d2e](https://github.com/feathersjs/feathers/commit/1645d2e))
- **package:** update generator-feathers to version 2.4.1 ([#140](https://github.com/feathersjs/feathers/issues/140)) ([e5a5f7c](https://github.com/feathersjs/feathers/commit/e5a5f7c))
- **package:** update generator-feathers to version 2.4.4 ([#151](https://github.com/feathersjs/feathers/issues/151)) ([3dcd480](https://github.com/feathersjs/feathers/commit/3dcd480))
- **package:** update generator-feathers to version 2.5.2 ([#155](https://github.com/feathersjs/feathers/issues/155)) ([493ca4b](https://github.com/feathersjs/feathers/commit/493ca4b))
- **package:** update generator-feathers to version 2.5.3 ([#156](https://github.com/feathersjs/feathers/issues/156)) ([ef570a8](https://github.com/feathersjs/feathers/commit/ef570a8))
- **package:** update generator-feathers to version 2.5.4 ([#158](https://github.com/feathersjs/feathers/issues/158)) ([787f30c](https://github.com/feathersjs/feathers/commit/787f30c))
- **package:** update generator-feathers to version 2.5.5 ([#159](https://github.com/feathersjs/feathers/issues/159)) ([bbd1b29](https://github.com/feathersjs/feathers/commit/bbd1b29))
- **package:** update generator-feathers to version 2.5.6 ([#161](https://github.com/feathersjs/feathers/issues/161)) ([cb72a5c](https://github.com/feathersjs/feathers/commit/cb72a5c))
- **package:** update generator-feathers to version 2.6.0 ([#164](https://github.com/feathersjs/feathers/issues/164)) ([6212ec9](https://github.com/feathersjs/feathers/commit/6212ec9))
- **package:** update generator-feathers-plugin to version 0.11.0 ([#105](https://github.com/feathersjs/feathers/issues/105)) ([d40bb75](https://github.com/feathersjs/feathers/commit/d40bb75))
- **package:** update generator-feathers-plugin to version 0.12.1 ([#112](https://github.com/feathersjs/feathers/issues/112)) ([f374e01](https://github.com/feathersjs/feathers/commit/f374e01))
- **package:** update generator-feathers-plugin to version 1.0.0 ([#134](https://github.com/feathersjs/feathers/issues/134)) ([ee905b0](https://github.com/feathersjs/feathers/commit/ee905b0))
- **package:** update jsonwebtoken to version 8.0.0 ([#567](https://github.com/feathersjs/feathers/issues/567)) ([6811626](https://github.com/feathersjs/feathers/commit/6811626))
- **package:** update ms to version 2.0.0 ([#509](https://github.com/feathersjs/feathers/issues/509)) ([7e4b0b6](https://github.com/feathersjs/feathers/commit/7e4b0b6))
- **package:** update passport to version 0.4.0 ([#558](https://github.com/feathersjs/feathers/issues/558)) ([dcb14a5](https://github.com/feathersjs/feathers/commit/dcb14a5))
- **package:** update passport-jwt to version 4.0.0 ([#58](https://github.com/feathersjs/feathers/issues/58)) ([77a3800](https://github.com/feathersjs/feathers/commit/77a3800))
- **package:** update socket.io to version 2.0.0 ([#75](https://github.com/feathersjs/feathers/issues/75)) ([d4a4b71](https://github.com/feathersjs/feathers/commit/d4a4b71))
- **package:** update yeoman-environment to version 2.0.0 ([#89](https://github.com/feathersjs/feathers/issues/89)) ([2355652](https://github.com/feathersjs/feathers/commit/2355652))
- **package:** update yeoman-generator to version 2.0.0 ([#279](https://github.com/feathersjs/feathers/issues/279)) ([4f38e8b](https://github.com/feathersjs/feathers/commit/4f38e8b))
- **package:** update yeoman-generator to version 2.0.0 ([#46](https://github.com/feathersjs/feathers/issues/46)) ([7071095](https://github.com/feathersjs/feathers/commit/7071095))
- **package:** update yeoman-generator to version 3.0.0 ([#374](https://github.com/feathersjs/feathers/issues/374)) ([acdbbca](https://github.com/feathersjs/feathers/commit/acdbbca))

### chore

- **package:** Move adapter tests into their own module ([#1164](https://github.com/feathersjs/feathers/issues/1164)) ([dcc1e6b](https://github.com/feathersjs/feathers/commit/dcc1e6b))
- drop support for Node.js 0.10 ([#48](https://github.com/feathersjs/feathers/issues/48)) ([3f7555a](https://github.com/feathersjs/feathers/commit/3f7555a))

### Features

- @feathers/cli: introduce option to choose jest for tests instead of mocha ([#1057](https://github.com/feathersjs/feathers/issues/1057)) ([1356a1c](https://github.com/feathersjs/feathers/commit/1356a1c))
- @feathersjs/authentication-oauth ([#1299](https://github.com/feathersjs/feathers/issues/1299)) ([656bae7](https://github.com/feathersjs/feathers/commit/656bae7))
- Add authentication through oAuth redirect to authentication client ([#1301](https://github.com/feathersjs/feathers/issues/1301)) ([35d8043](https://github.com/feathersjs/feathers/commit/35d8043))
- Add AuthenticationBaseStrategy and make authentication option handling more explicit ([#1284](https://github.com/feathersjs/feathers/issues/1284)) ([2667d92](https://github.com/feathersjs/feathers/commit/2667d92))
- Add TypeScript definitions ([#1275](https://github.com/feathersjs/feathers/issues/1275)) ([9dd6713](https://github.com/feathersjs/feathers/commit/9dd6713))
- Added generators for feathers-objection & feathers-cassandra ([#1010](https://github.com/feathersjs/feathers/issues/1010)) ([c8b27d0](https://github.com/feathersjs/feathers/commit/c8b27d0))
- Allow registering a service at the root level ([#1115](https://github.com/feathersjs/feathers/issues/1115)) ([c73d322](https://github.com/feathersjs/feathers/commit/c73d322))
- Allow to skip sending service events ([#1270](https://github.com/feathersjs/feathers/issues/1270)) ([b487bbd](https://github.com/feathersjs/feathers/commit/b487bbd))
- Authentication v3 client ([#1240](https://github.com/feathersjs/feathers/issues/1240)) ([65b43bd](https://github.com/feathersjs/feathers/commit/65b43bd))
- Authentication v3 core server implementation ([#1205](https://github.com/feathersjs/feathers/issues/1205)) ([1bd7591](https://github.com/feathersjs/feathers/commit/1bd7591))
- Authentication v3 Express integration ([#1218](https://github.com/feathersjs/feathers/issues/1218)) ([82bcfbe](https://github.com/feathersjs/feathers/commit/82bcfbe))
- Authentication v3 local authentication ([#1211](https://github.com/feathersjs/feathers/issues/1211)) ([0fa5f7c](https://github.com/feathersjs/feathers/commit/0fa5f7c))
- Common database adapter utilities and test suite ([#1130](https://github.com/feathersjs/feathers/issues/1130)) ([17b3dc8](https://github.com/feathersjs/feathers/commit/17b3dc8))
- Make custom query for oAuth authentication ([#1124](https://github.com/feathersjs/feathers/issues/1124)) ([5d43e3c](https://github.com/feathersjs/feathers/commit/5d43e3c))
- Remove (hook, next) signature and SKIP support ([#1269](https://github.com/feathersjs/feathers/issues/1269)) ([211c0f8](https://github.com/feathersjs/feathers/commit/211c0f8))
- Support params symbol to skip authenticate hook ([#1296](https://github.com/feathersjs/feathers/issues/1296)) ([d16cf4d](https://github.com/feathersjs/feathers/commit/d16cf4d))

### BREAKING CHANGES

- Rewrite for authentication v3
- Update authentication strategies for @feathersjs/authentication v3
- **package:** Removes adapter tests from @feathersjs/adapter-commons
- Move database adapter utilities from @feathersjs/commons into its own module
- This module no longer supports Node.js 0.10


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2024 Feathers Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: README.md
================================================
<a href="https://feathersjs.com" title="FeathersJS">
  <img src="https://feathersjs.com/og.png" alt="Feathers - The API and real-time application framework">
</a>

---

[![CI](https://github.com/feathersjs/feathers/workflows/CI/badge.svg)](https://github.com/feathersjs/feathers/actions?query=workflow%3ACI)
[![Download Status](https://img.shields.io/npm/dm/@feathersjs/feathers.svg?style=flat-square)](https://www.npmjs.com/package/@feathersjs/feathers)
[![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/qa8kez8QBx)

Feathers is a full-stack framework for creating web APIs and real-time applications with TypeScript or JavaScript.

Feathers can interact with any backend technology, supports many databases out of the box and works with any frontend like React, VueJS, Angular, React Native, Android or iOS.

# Getting started

Get started with just three commands:

```bash
$ npm create feathers my-new-app
$ cd my-new-app
$ npm run dev
```

To learn more about Feathers visit the website at [feathersjs.com](http://feathersjs.com) or jump right into [the Feathers guides](https://feathersjs.com/guides/).

# Contributing

To start developing, clone this repository, then run:

```
cd feathers
npm install
```

To run all tests run

```
npm test
```

Individual tests can be run in the module you are working on:

```
cd packages/feathers
npm test
```

# License

Copyright (c) 2024 [Feathers contributors](https://github.com/feathersjs/feathers/graphs/contributors)

Licensed under the [MIT license](LICENSE).


================================================
FILE: docs/.vitepress/components/Badges.vue
================================================
<script setup lang="ts">
// A style wrapper to make npm badges do flex-row.
</script>

<template>
  <div class="badges"><slot /></div>
</template>

<style lang="postcss">
/* For npm and changelog badges */
.badges p {
  @apply flex flex-row;
}
.badges img {
  margin-right: .5em
}
</style>


================================================
FILE: docs/.vitepress/components/BlockQuote.vue
================================================
<script setup lang="ts">
import { computed } from 'vue'

const props = defineProps({
  // Can be tip, info, warning, danger, or details
  type: { type: String, default: 'tip' },
  label: { type: String },
})
const outerTag = computed(() => (props.type === 'details' ? 'details' : 'div'))
const labelTag = computed(() => (props.type === 'details' ? 'summary' : 'p'))
</script>

<template>
  <component :is="outerTag" class="custom-block" :class="type">
    <component
      :is="labelTag"
      class="custom-block-title"
      :class="type === 'details' ? 'capitalize' : 'uppercase'"
    >
      {{ label || type }}
    </component>
    <slot />
  </component>
</template>


================================================
FILE: docs/.vitepress/components/Contributors.vue
================================================
<script setup lang="ts">
import { contributors } from '../contributors'
</script>

<template>
  <div flex="~ wrap gap2" justify-center>
    <a v-for="{ name, avatar } of contributors" :key="name" :href="`https://github.com/${name}`" m-0 rel="noopener noreferrer" :aria-label="`${name} on GitHub`">
      <img loading="lazy" :src="avatar" width="50" height="50" rounded-full h-12 w-12 :alt="`${name}'s avatar`">
    </a>
  </div>
</template>


================================================
FILE: docs/.vitepress/components/DatabaseBlock.vue
================================================
<script setup lang="ts">
import { useGlobalDb } from '../theme/store'

defineProps({
  globalId: String,
  inline: String
})

const activeGlobalDb = useGlobalDb()
</script>

<template>
  <component :is="inline ? 'span' : 'div'" :class="{ hidden: globalId !== activeGlobalDb }">
    <slot />
  </component>
</template>


================================================
FILE: docs/.vitepress/components/DatabaseSelect.vue
================================================
<script setup lang="ts">
import { useGlobalDb } from '../theme/store'
import Select from './Select.vue'

const activeGlobalDb = useGlobalDb()

const handleGlobalDbUpdate = (val: string) => {
  if (activeGlobalDb.value !== val) {
    activeGlobalDb.value = val
    document.body.setAttribute('data-db', val)
  }
}
</script>

<template>
  <Select
    id="GlobalDbSelect"
    :value="activeGlobalDb"
    label="Database"
    :options="[
      { value: 'sql', text: 'SQL' },
      { value: 'mongodb', text: 'MongoDB' }
    ]"
    @update-value="handleGlobalDbUpdate"
  />
</template>


================================================
FILE: docs/.vitepress/components/FeaturesList.vue
================================================
<template>
  <ul
    class="features-list"
    dir="auto"
    flex="~ col gap2 md:gap-3"
  >
    <ListItem><a target="_blank" href="https://vitejs.dev" rel="noopener noreferrer">Vite</a>'s config, transformers, resolvers, and plugins.</ListItem>
    <ListItem>Use the same setup from your app to run the tests!</ListItem>
    <ListItem><a target="_blank" href="https://twitter.com/antfu7/status/1468233216939245579" rel="noopener noreferrer">Smart & instant watch mode, like HMR for tests!</a></ListItem>
    <ListItem>Components testing for Vue, React, Svelte, Lit and more</ListItem>
    <ListItem>Out-of-box TypeScript / JSX support</ListItem>
    <ListItem>ESM first, top level await</ListItem>
    <ListItem>Workers multi-threading via <a target="_blank" href="https://github.com/Aslemammad/tinypool" rel="noopener noreferrer">tinypool</a></ListItem>
    <ListItem>Filtering, timeouts, concurrent for suite and tests</ListItem>
    <ListItem><a target="_blank" href="https://jestjs.io/docs/snapshot-testing" rel="noopener noreferrer">Jest Snapshot</a></ListItem>
    <ListItem><a target="_blank" href="https://www.chaijs.com/" rel="noopener noreferrer">Chai</a> built-in for assertions + <a target="_blank" href="https://jestjs.io/docs/expect" rel="noopener noreferrer">Jest expect</a> compatible APIs</ListItem>
    <ListItem><a target="_blank" href="https://github.com/Aslemammad/tinyspy" rel="noopener noreferrer">Tinyspy</a> built-in for mocking</ListItem>
    <ListItem><a target="_blank" href="https://github.com/capricorn86/happy-dom" rel="noopener noreferrer">happy-dom</a> or <a target="_blank" href="https://github.com/jsdom/jsdom" rel="noopener noreferrer">jsdom</a> for DOM mocking</ListItem>
    <ListItem>Native code coverage via <a target="_blank" href="https://github.com/bcoe/c8" rel="noopener noreferrer">c8</a></ListItem>
    <ListItem>Rust like <a href="/guide/in-source">in-source testing</a></ListItem>
  </ul>
</template>

<style scoped>
.features-list li {
  list-style: none;
  display: flex;
  gap: 0.4rem;
  margin: 0;
}

.features-list {
  padding: 0;
}
</style>


================================================
FILE: docs/.vitepress/components/LanguageBlock.vue
================================================
<script setup lang="ts">
import { useGlobalLanguage } from '../theme/store'

defineProps({
  globalId: String,
  inline: String
})

const activeGlobalId = useGlobalLanguage()
</script>

<template>
  <component :is="inline ? 'span' : 'div'" :class="{ hidden: globalId !== activeGlobalId }">
    <slot />
  </component>
</template>


================================================
FILE: docs/.vitepress/components/LanguageSelect.vue
================================================
<script setup lang="ts">
import { useGlobalLanguage } from '../theme/store'
import Select from './Select.vue'

const activeGlobalLanguage = useGlobalLanguage()

const handleGlobalLanguageUpdate = (val: string) => {
  activeGlobalLanguage.value = val
  document.body.setAttribute('data-language', val)
}
</script>

<template>
  <Select
    id="GlobalLanguageSelect"
    :value="activeGlobalLanguage"
    label="Code Language"
    :options="[
      { value: 'ts', text: 'TypeScript' },
      { value: 'js', text: 'JavaScript' }
    ]"
    @update-value="handleGlobalLanguageUpdate"
  />
</template>


================================================
FILE: docs/.vitepress/components/ListItem.vue
================================================
<script setup lang="ts">
import { computed, effectScope, onMounted, ref } from 'vue'
import { until, useElementVisibility } from '@vueuse/core'

const el = ref()
const state = ref(0)

function reset() {
  state.value = 0
  setTimeout(() => {
    state.value = Math.random() > 0.9 ? 2 : 1
    if (state.value === 2)
      setTimeout(reset, 1000)
  }, Math.round(Math.random() * 3000) + 400)
}

const color = computed(() => {
  return {
    '--c-brand': state.value === 1
      ? 'rgba(74,222,128,1)'
      : state.value === 2
        ? 'rgba(248, 113, 113)'
        : 'rgba(250, 204, 21)',
  } as any
})

const scope = effectScope()

const visibility = scope.run(() => useElementVisibility(el))

onMounted(async () => {
  await until(visibility).toBe(true)

  scope.stop()
  reset()
})
</script>

<template>
  <li :style="color">
    <div
      ref="el"
      relative
      m="ya r-1"
      w-5
      h-5
      flex-none
      align-mid
    >
      <div absolute transition duration-300 :class="state ? 'flip' : ''">
        <div i-carbon:circle-dash animate-spin animate-2s text-yellow4 />
      </div>
      <div absolute transition duration-300 :class="state === 1 ? '' : 'flip'">
        <div i-carbon:checkmark-outline class="text-$vp-c-brand" />
      </div>
      <div absolute transition duration-300 :class="state === 2 ? '' : 'flip'">
        <div i-carbon:close-outline text-red4 />
      </div>
    </div>
    <div>
      <slot />
    </div>
  </li>
</template>

<style>
.flip {
  transform: rotateY(90deg);
}
</style>


================================================
FILE: docs/.vitepress/components/Logo.vue
================================================
<template>
  <svg
    class="feathers-logo"
    viewBox="0 0 256 256"
    version="1.1"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    preserveAspectRatio="xMidYMid"
  >
    <g>
      <path
        d="M128,9.102 C193.665,9.102 246.898,62.335 246.898,128 C246.898,193.665 193.665,246.898 128,246.898 C62.335,246.898 9.102,193.665 9.102,128 C9.102,62.335 62.335,9.102 128,9.102 M128,0 C57.421,0 0,57.421 0,128 C0,198.579 57.421,256 128,256 C198.579,256 256,198.579 256,128 C256,57.421 198.579,0 128,0 M148.83,25.524 C138.4,23.628 113.179,61.933 104.836,85.258 C104.202,87.027 102.75,93.507 102.75,95.213 C102.75,95.213 109.281,109.268 111.093,112.564 C108.059,110.984 101.77,98.808 101.77,98.808 C98.736,104.592 95.828,131.148 96.776,136.079 C96.776,136.079 103.538,146.141 106.163,148.657 C102.56,147.456 96.492,139.302 96.492,139.302 C95.354,142.81 95.576,150.109 96.113,152.576 C100.664,159.213 106.732,159.972 106.732,159.972 C106.732,159.972 100.095,226.153 110.145,231.083 C116.403,229.756 117.92,157.127 117.92,157.127 C117.92,157.127 125.505,157.696 127.212,155.8 C131.068,153.145 140.038,125.576 140.17,121.598 C140.17,121.598 129.76,123.55 124.683,125.522 C128.509,121.722 140.732,119.17 140.732,119.17 C144.047,115.191 151.023,88.123 151.726,79.779 C151.902,77.686 152.309,75.122 151.994,71.381 C151.994,71.381 142.053,73.558 139.98,72.805 C142.084,72.568 152.243,68.665 152.243,68.665 C154.044,52.452 154.601,26.574 148.83,25.524 L148.83,25.524 Z M112.45,197.215 C111.655,216.711 111.156,222.219 110.335,226.816 C109.956,227.673 109.577,227.813 109.197,226.721 C105.72,210.729 105.973,90.283 145.606,35.48 C122.556,77.572 112.071,158.341 112.45,197.215 L112.45,197.215 Z"
        fill="currentColor"
      ></path>
    </g>
  </svg>
</template>

<style lang="postcss">
.dark .feathers-logo {
  @apply invert-1;
}
</style>


================================================
FILE: docs/.vitepress/components/Select.vue
================================================
<script setup lang="ts">
import { computed, onMounted, watch, ref } from 'vue'
import { useRoute } from 'vitepress'

interface Props {
  value: string
  label: string
  options: Array<{ value: string; text: string }>
  showOnRoutePrefix?: string[]
  hideOnMobile?: boolean
  hideLabel?: boolean
}
const props = defineProps<Props>()
const emit = defineEmits(['updateValue'])

const route = useRoute()
const isVisible = ref(true)

const updateAttribute = (value: string) => {
  emit('updateValue', value)
}

const valueProxy = computed({
  get: () => props.value,
  set: (val: string) => {
    updateAttribute(val)
  }
})

onMounted(() => {
  updateAttribute(props.value)
  watch(
    () => route.path,
    (val) => {
      const prefixes = props.showOnRoutePrefix
      if (prefixes?.length) {
        const shouldShow = !!prefixes.find((p: string) => route.path.includes(p))
        isVisible.value = shouldShow
      }
    },
    { immediate: true }
  )
})
</script>

<template>
  <div
    class="transition-all duration-400 overflow-hidden"
    :class="{ 'hidden lg:block': hideOnMobile, 'max-h-20': isVisible, 'max-h-0': !isVisible }"
  >
    <label>
      <span v-if="!hideLabel" class="language-select-label text-sm font-bold block pt-2">{{ label }}</span>
      <div class="relative">
        <select
          v-model="valueProxy"
          class="language-select w-full border border-black/10 pl-3 py-1.5 bg-base-100 pr-10 font-semibold transition duration-200 ease-in-out rounded-md"
        >
          <option v-for="option in options" :key="option.value" :value="option.value">
            {{ option.text }}
          </option>
        </select>
        <div class="i-carbon-chevron-down absolute right-1.5 top-2.5" />
      </div>
    </label>
  </div>
</template>

<style lang="postcss">
.language-select-label {
  color: var(--vp-c-text-1);
}
</style>


================================================
FILE: docs/.vitepress/components/Tab.vue
================================================
<script setup lang="ts">
import { computed, inject } from 'vue'

const props = defineProps({
  name: String,
  globalId: String,
})

const { addTab, activeIndex, showTabs }: any = inject('tab-state')

const index = addTab({
  name: props.name,
  globalId: props.globalId,
})

const isActive = computed(() => {
  return index === activeIndex.value
})
</script>

<template>
  <div v-if="isActive" class="tab relative">
    <div
      v-if="!showTabs && !hideLabel"
      class="tab-label bg-neutral text-neutral-content inline-block text-xs px-2.5 py-1 rounded-t-md"
    >
      {{ name }}
    </div>
    <div class="z-0">
      <slot></slot>
    </div>
  </div>
</template>

<style>
.tab {
  @apply pt-6;
}
.tab-label {
  @apply absolute z-10 top-0;
}
.tab div[class*='language-']:first-child {
  @apply -mt-0.25;
}
</style>


================================================
FILE: docs/.vitepress/components/Tabs.vue
================================================
<script setup lang="ts">
import { ref, watch, provide } from "vue"
import { useStorage } from "@vueuse/core"
import { useGlobalLanguage } from "../theme/store"

const props = defineProps({
  groupName: String,
  showTabs: Boolean,
})

// Tabs
const tabs = ref<any[]>([])
const addTab = (tabData: any) => {
  const existingIndex = tabs.value.findIndex((t) => t.name === tabData.name)
  return existingIndex !== -1 ? existingIndex : tabs.value.push(tabData) - 1
}

// Active Tab
const activeIndex: any = useStorage(props.groupName as string, 0)
const setActiveTab = (index: number) => {
  const tab = tabs.value[index]
  activeIndex.value = index
  // Update the globalId to sync tabs.
  // if (tab.globalId) activeGlobalId.value = tab.globalId
}

provide("tab-state", { addTab, activeIndex, showTabs: props.showTabs })

// Global ID
const activeGlobalId = useGlobalLanguage()
watch(activeGlobalId, (id) => {
  const matchingTabIndex = tabs.value.findIndex((t) => t.globalId === id)
  if (matchingTabIndex != -1) activeIndex.value = matchingTabIndex
})
</script>

<template>
  <div class="tabs mt-10 mb-8">
    <div v-if="showTabs" class="flex flex-row">
      <button
        type="button"
        v-for="(tab, index) in tabs"
        :key="tab.name"
        class="py-1.5 px-3"
        :class="{
          'active text-white bg-neutral': index === activeIndex,
          'bg-neutral/20': index !== activeIndex,
          'rounded-l-lg': index === 0,
          'rounded-r-lg': index === tabs.length - 1,
        }"
        @click="() => setActiveTab(index)"
      >
        {{ tab.name }}
      </button>
    </div>

    <slot />
  </div>
</template>


================================================
FILE: docs/.vitepress/components/TeamMember.vue
================================================
<script setup lang="ts">
import type { CoreTeam } from '../contributors'

defineProps<{
  avatar: CoreTeam['avatar']
  name: CoreTeam['name']
  github: CoreTeam['github']
  twitter: CoreTeam['twitter']
  sponsors: CoreTeam['sponsors']
  description: CoreTeam['description']
}>()
</script>

<template>
  <div text-left flex="~ row gap6" relative>
    <img
      loading="lazy"
      width="100" height="100"
      rounded-full min-w-25 min-h-25 h-25 w-25
      inline-block
      :src="avatar"
      :alt="`${name}'s avatar`"
    >
    <div flex="~ col gap2">
      <div text-2xl>
        {{ name }}
      </div>
      <div op60 v-html="description" />
      <div flex="~ inline gap-2" text-2xl>
        <a
          class="i-carbon-logo-github inline-block !text-current op30 hover:op100 mya transition duration-200"
          :href="`https://github.com/${github}`"
          target="_blank"
          rel="noopener noreferrer"
          :aria-label="`${name} on GitHub`"
        />
        <a
          v-if="twitter"
          class="i-carbon-logo-twitter inline-block text-1.3em mya !text-current op30 hover:op100 transition duration-200"
          :href="`https://twitter.com/${twitter}`"
          target="_blank"
          rel="noopener noreferrer"
          :aria-label="`${name} on Twitter`"
        />
      </div>
    </div>
    <a
      v-if="sponsors"
      class="btn bg-pink-500 hover:bg-pink-600 text-sm !text-white px3 absolute bottom-2 right-1"
      flex="~ row gap-2"
      target="_blank"
      rel="noopener noreferrer"
      :href="`https://github.com/sponsors/${github}`"
    >
      <span class="i-carbon-favorite-filled" />
      Sponsor
    </a>
  </div>
</template>


================================================
FILE: docs/.vitepress/components.d.ts
================================================
/* eslint-disable */
// @ts-nocheck
// biome-ignore lint: disable
// oxlint-disable
// ------
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399

export {}

/* prettier-ignore */
declare module 'vue' {
  export interface GlobalComponents {
    Badges: typeof import('./components/Badges.vue')['default']
    BlockQuote: typeof import('./components/BlockQuote.vue')['default']
    Contributors: typeof import('./components/Contributors.vue')['default']
    DatabaseBlock: typeof import('./components/DatabaseBlock.vue')['default']
    DatabaseSelect: typeof import('./components/DatabaseSelect.vue')['default']
    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElOption: typeof import('element-plus/es')['ElOption']
    ElRadio: typeof import('element-plus/es')['ElRadio']
    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
    ElSelect: typeof import('element-plus/es')['ElSelect']
    FeaturesList: typeof import('./components/FeaturesList.vue')['default']
    LanguageBlock: typeof import('./components/LanguageBlock.vue')['default']
    LanguageSelect: typeof import('./components/LanguageSelect.vue')['default']
    ListItem: typeof import('./components/ListItem.vue')['default']
    Logo: typeof import('./components/Logo.vue')['default']
    Select: typeof import('./components/Select.vue')['default']
    Tab: typeof import('./components/Tab.vue')['default']
    Tabs: typeof import('./components/Tabs.vue')['default']
    TeamMember: typeof import('./components/TeamMember.vue')['default']
  }
}


================================================
FILE: docs/.vitepress/config.nav.ts
================================================
import { releases } from './meta'
// import { version } from '../package.json'

const version = 5

export default [
  { text: 'Guides', link: '/guides/' },
  { text: 'API', link: '/api/' },
  { text: 'Help', link: '/help/' },
  {
    text: `v${version}`,
    items: [
      {
        text: 'Release Notes ',
        link: releases
      },
      {
        text: 'Crow v4 ',
        link: 'https://crow.docs.feathersjs.com'
      },
      {
        text: 'Buzzard v3 ',
        link: 'https://buzzard.docs.feathersjs.com'
      }
    ]
  },
  {
    text: 'Ecosystem',
    link: '/ecosystem/'
  }
]


================================================
FILE: docs/.vitepress/config.sidebar.ts
================================================
const comparisonSidebar = [
  {
    text: 'Compare Feathers',
    items: [
      {
        text: 'Overview',
        link: '/comparison'
      },
      {
        text: 'Feathers vs Firebase',
        link: '/feathers-vs-firebase'
      },
      {
        text: 'Feathers vs Meteor',
        link: '/feathers-vs-meteor'
      },
      {
        text: 'Feathers vs Sails',
        link: '/feathers-vs-sails'
      },
      {
        text: 'Feathers vs Loopback',
        link: '/feathers-vs-loopback'
      }
    ]
  }
]

export default {
  '/guides': [
    {
      text: 'Getting Started',
      collapsible: true,
      items: [
        {
          text: 'Quick start',
          link: '/guides/basics/starting.md'
        },
        {
          text: 'Creating an app',
          link: '/guides/basics/generator.md'
        },
        {
          text: 'Authentication',
          link: '/guides/basics/authentication.md'
        },
        {
          text: 'Services',
          link: '/guides/basics/services.md'
        },
        {
          text: 'Hooks',
          link: '/guides/basics/hooks.md'
        },
        {
          text: 'Schemas',
          link: '/guides/basics/schemas.md'
        },
        {
          text: 'Logging in',
          link: '/guides/basics/login.md'
        }
        // {
        //   text: 'Writing Tests',
        //   link: '/guides/basics/testing.md'
        // }
      ]
    },
    {
      text: 'Frontend',
      collapsible: true,
      collapsed: false,
      items: [
        {
          text: 'JavaScript',
          link: '/guides/frontend/javascript.md'
        }
        // {
        //   text: 'Frontend Frameworks',
        //   link: '/guides/frameworks.md'
        // }
      ]
    },
    {
      text: 'CLI',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: '📖 Readme',
          link: '/guides/cli/index.md'
        },
        {
          text: '📂 config',
          items: [
            {
              text: '📄 default.json',
              link: '/guides/cli/default.json.md'
            },
            {
              text: '📄 custom-environment-variables.json',
              link: '/guides/cli/custom-environment-variables.md'
            }
          ]
        },
        {
          text: '📂 src',
          items: [
            {
              text: '📂 hooks',
              items: [
                {
                  text: '📄 &lt;hook&gt;',
                  link: '/guides/cli/hook.md'
                },
                {
                  text: '📄 log-error',
                  link: '/guides/cli/log-error.md'
                }
              ]
            },
            {
              text: '📂 services',
              items: [
                {
                  text: '📂 &lt;service&gt;',
                  items: [
                    {
                      text: '📄 &lt;service&gt;',
                      link: '/guides/cli/service.md'
                    },
                    {
                      text: '📄 &lt;service&gt;.class',
                      link: '/guides/cli/service.class.md'
                    },
                    {
                      text: '📄 &lt;service&gt;.schemas',
                      link: '/guides/cli/service.schemas.md'
                    },
                    {
                      text: '📄 &lt;service&gt;.shared',
                      link: '/guides/cli/service.shared.md'
                    }
                  ]
                }
              ]
            },
            {
              text: '📄 app',
              link: '/guides/cli/app.md'
            },
            {
              text: '📄 authentication',
              link: '/guides/cli/authentication.md'
            },
            {
              text: '📄 channels',
              link: '/guides/cli/channels.md'
            },
            {
              text: '📄 client',
              link: '/guides/cli/client.md'
            },
            {
              text: '📄 configuration',
              link: '/guides/cli/configuration.md'
            },
            {
              text: '📄 declarations',
              link: '/guides/cli/declarations.md'
            },
            {
              text: '📄 logger',
              link: '/guides/cli/logger.md'
            },
            {
              text: '📄 validators',
              link: '/guides/cli/validators.md'
            },
            {
              text: '📄 &lt;database&gt;',
              link: '/guides/cli/databases.md'
            }
          ]
        },
        {
          text: '📂 test',
          items: [
            {
              text: '📄 client.test',
              link: '/guides/cli/client.test.md'
            },
            {
              text: '📄 app.test',
              link: '/guides/cli/app.test.md'
            },
            {
              text: '📄 &lt;service&gt;.test',
              link: '/guides/cli/service.test.md'
            }
          ]
        },
        {
          text: '📄 .prettierrc',
          link: '/guides/cli/prettierrc.md'
        },
        {
          text: '📄 knexfile',
          link: '/guides/cli/knexfile.md'
        },
        {
          text: '📄 package.json',
          link: '/guides/cli/package.md'
        },
        {
          text: '📄 tsconfig.json',
          link: '/guides/cli/tsconfig.md'
        }
      ]
    },
    {
      text: 'Migrating',
      // collapsible: true,
      items: [
        {
          text: "What's new?",
          link: '/guides/whats-new.md'
        },
        {
          text: 'Migration guide',
          link: '/guides/migrating.md'
        }
      ]
    }
  ],
  '/api': [
    {
      text: 'Core',
      collapsible: true,
      items: [
        {
          text: 'Application',
          link: '/api/application'
        },
        {
          text: 'Services',
          link: '/api/services'
        },
        {
          text: 'Hooks',
          link: '/api/hooks'
        },
        {
          text: 'Events',
          link: '/api/events'
        },
        {
          text: 'Errors',
          link: '/api/errors'
        }
      ]
    },
    {
      text: 'Transports',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: 'Configuration',
          link: '/api/configuration'
        },
        {
          text: 'Koa',
          link: '/api/koa'
        },
        {
          text: 'Express',
          link: '/api/express'
        },
        {
          text: 'Socket.io',
          link: '/api/socketio'
        },
        {
          text: 'Channels',
          link: '/api/channels'
        }
      ]
    },
    {
      text: 'Authentication',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: 'Overview',
          link: '/api/authentication/'
        },
        {
          text: 'Service',
          link: '/api/authentication/service'
        },
        {
          text: 'Hook',
          link: '/api/authentication/hook'
        },
        {
          text: 'Strategies',
          link: '/api/authentication/strategy'
        },
        {
          text: 'JWT',
          link: '/api/authentication/jwt'
        },
        {
          text: 'Local',
          link: '/api/authentication/local'
        },
        {
          text: 'OAuth',
          link: '/api/authentication/oauth'
        }
      ]
    },
    {
      text: 'Client',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: 'Feathers Client',
          link: '/api/client'
        },
        {
          text: 'REST Client',
          link: '/api/client/rest'
        },
        {
          text: 'Socket.io Client',
          link: '/api/client/socketio'
        },
        {
          text: 'Authentication',
          link: '/api/authentication/client'
        }
      ]
    },
    {
      text: 'Schema',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: 'Overview',
          link: '/api/schema/'
        },
        {
          text: 'TypeBox',
          link: '/api/schema/typebox'
        },
        {
          text: 'JSON schema',
          link: '/api/schema/schema'
        },
        {
          text: 'Validators',
          link: '/api/schema/validators'
        },
        {
          text: 'Resolvers',
          link: '/api/schema/resolvers'
        }
      ]
    },
    {
      text: 'Databases',
      collapsible: true,
      collapsed: true,
      items: [
        {
          text: 'Adapters',
          link: '/api/databases/adapters'
        },
        {
          text: 'Common API',
          link: '/api/databases/common'
        },
        {
          text: 'Querying',
          link: '/api/databases/querying'
        },
        {
          text: 'MongoDB',
          link: '/api/databases/mongodb'
        },
        {
          text: 'SQL',
          link: '/api/databases/knex'
        },
        {
          text: 'Memory',
          link: '/api/databases/memory'
        }
      ]
    }
  ],
  '/help': [
    {
      text: 'Help',
      items: [
        {
          text: 'Getting Help',
          link: '/help/'
        },
        {
          text: 'FAQ',
          link: '/help/faq'
        }
      ]
    }
  ],
  '/cookbook': [
    {
      text: 'General',
      items: [
        {
          text: 'Scaling',
          link: '/cookbook/general/scaling'
        }
      ]
    },
    {
      text: 'Authentication',
      items: [
        {
          text: 'Anonymous',
          link: '/cookbook/authentication/anonymous'
        },
        {
          text: 'API Key',
          link: '/cookbook/authentication/apiKey'
        },
        {
          text: 'Auth0',
          link: '/cookbook/authentication/auth0'
        },
        {
          text: 'Facebook',
          link: '/cookbook/authentication/facebook'
        },
        {
          text: 'Google',
          link: '/cookbook/authentication/google'
        },
        {
          text: 'Firebase',
          link: '/cookbook/authentication/firebase'
        },
        {
          text: 'Discord',
          link: '/cookbook/authentication/_discord'
        },
        {
          text: 'Stateless JWT',
          link: '/cookbook/authentication/stateless'
        },
        {
          text: 'Revoking JWTs',
          link: '/cookbook/authentication/revoke-jwt'
        }
      ]
    },
    {
      text: 'Express',
      items: [
        {
          text: 'File Uploads',
          link: '/cookbook/express/file-uploading'
        },
        {
          text: 'View Engine SSR',
          link: '/cookbook/express/view-engine'
        }
      ]
    },
    {
      text: 'Deployment',
      items: [
        {
          text: 'Dockerize a Feathers App',
          link: '/cookbook/deploy/docker'
        }
      ]
    }
  ],
  '/comparison': comparisonSidebar,
  '/feathers-vs-firebase': comparisonSidebar,
  '/feathers-vs-meteor': comparisonSidebar,
  '/feathers-vs-sails': comparisonSidebar,
  '/feathers-vs-loopback': comparisonSidebar
}


================================================
FILE: docs/.vitepress/config.ts
================================================
import { defineConfig } from 'vitepress'
import { discord, font, github, ogImage, ogUrl, twitter, feathersDescription, feathersName } from './meta'
import sidebar from './config.sidebar'
import nav from './config.nav'

// For sitemap/search
import { createWriteStream } from 'node:fs'
import { SitemapStream } from 'sitemap'
import { resolve } from 'node:path'
const links: any[] = []

export default defineConfig({
  lang: 'en-US',
  title: feathersName,
  description: feathersDescription,
  head: [
    ['meta', { name: 'theme-color', content: '#ffffff' }],
    ['link', { rel: 'icon', href: '/logo.svg', type: 'image/svg+xml' }],
    ['link', { rel: 'alternate icon', href: '/favicon.ico', type: 'image/png', sizes: '16x16' }],
    [
      'meta',
      {
        name: 'author',
        content: `daffl, marshallswain, and FeathersJS contributors`
      }
    ],
    [
      'meta',
      {
        name: 'keywords',
        content:
          'feathersjs, feathers, react, vue, preact, svelte, solid, typescript, esm, node, deno, cloudflare, workers'
      }
    ],
    ['meta', { property: 'og:title', content: feathersName }],
    ['meta', { property: 'og:description', content: feathersDescription }],
    ['meta', { property: 'og:url', content: ogUrl }],
    ['meta', { property: 'og:image', content: ogImage }],
    ['meta', { name: 'twitter:title', content: feathersName }],
    ['meta', { name: 'twitter:description', content: feathersDescription }],
    ['meta', { name: 'twitter:image', content: ogImage }],
    ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
    ['link', { href: font, rel: 'stylesheet' }],
    ['link', { rel: 'mask-icon', href: '/logo.svg', color: '#ffffff' }],
    ['link', { rel: 'apple-touch-icon', href: '/apple-touch-icon.png', sizes: '180x180' }]
  ],
  lastUpdated: true,
  markdown: {
    theme: {
      light: 'vitesse-light',
      dark: 'vitesse-dark'
    }
  },
  themeConfig: {
    logo: '/logo.svg',

    editLink: {
      pattern: 'https://github.com/feathersjs/feathers/edit/dove/docs/:path',
      text: 'Suggest changes to this page'
    },

    socialLinks: [
      { icon: 'discord', link: discord },
      { icon: 'github', link: github }
    ],

    footer: {
      message: 'Released under the MIT License.',
      copyright: `Copyright © 2012-${new Date().getFullYear()} FeathersJS contributors`
    },

    nav,
    sidebar
  },
  // for sitemap/search
  transformHtml: (_: any, id: any, { pageData }: any) => {
    if (!/[\\/]404\.html$/.test(id))
      links.push({
        // you might need to change this if not using clean urls mode
        url: pageData.relativePath.replace(/((^|\/)index)?\.md$/, '$2'),
        lastmod: pageData.lastUpdated
      })
  },
  // for sitemap/search
  buildEnd: async ({ outDir }) => {
    const sitemap = new SitemapStream({
      hostname: 'https://dove.feathersjs.com/'
    })
    const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml'))
    sitemap.pipe(writeStream)
    links.forEach((link) => sitemap.write(link))
    sitemap.end()
    await new Promise((r) => writeStream.on('finish', r))
  }
})


================================================
FILE: docs/.vitepress/meta.ts
================================================
// noinspection ES6PreferShortImport: IntelliJ IDE hint to avoid warning to use `~/contributors`, will fail on build if changed

/* Texts */
export const feathersName = 'feathers'
export const feathersShortName = 'feathers'
export const feathersDescription = 'The API & Real-time Application Framework'

/* CDN fonts and styles */
export const googleapis = 'https://fonts.googleapis.com'
export const gstatic = 'https://fonts.gstatic.com'
export const font = `${googleapis}/css2?family=Readex+Pro:wght@200;400;600&display=swap`

/* vitepress head */
export const ogUrl = 'https://feathersjs.com/'
export const ogImage = `${ogUrl}og.png`

/* GitHub and social links */
export const github = 'https://github.com/feathersjs/feathers'
export const releases = 'https://github.com/feathersjs/feathers/releases'
export const contributing = 'https://github.com/feathersjs/feathers/blob/master/.github/contributing.md'
export const discord = 'https://discord.gg/qa8kez8QBx'
export const twitter = null;

/* Avatar/Image/Sponsors servers */
export const preconnectLinks = [googleapis, gstatic]
export const preconnectHomeLinks = [googleapis, gstatic]

/* PWA runtime caching urlPattern regular expressions */
export const pwaFontsRegex = new RegExp(`^${googleapis}/.*`, 'i')
export const pwaFontStylesRegex = new RegExp(`^${gstatic}/.*`, 'i')


================================================
FILE: docs/.vitepress/scripts/assets.ts
================================================
import { promises as fs } from 'fs'
import fg from 'fast-glob'
import { font, preconnectHomeLinks, preconnectLinks } from '../meta'

const preconnect = `
  ${preconnectLinks.map(l => `<link rel="dns-prefetch" href="${l}">`).join('\n')}
  ${preconnectLinks.map(l => `<link rel="preconnect" crossorigin="anonymous" href="${l}">`).join('\n')}
`

const preconnectHome = `
  ${preconnectHomeLinks.map(l => `<link rel="dns-prefetch" href="${l}">`).join('\n')}
  ${preconnectHomeLinks.map(l => `<link rel="preconnect" crossorigin="anonymous" href="${l}">`).join('\n')}
`

export const optimizePages = async (pwa: boolean) => {
  const names = await fg('./.vitepress/dist/**/*.html', { onlyFiles: true })

  await Promise.all(names.map(async (i) => {
    let html = await fs.readFile(i, 'utf-8')

    let prefetchImg = '\n\t<link rel="prefetch" href="/logo.svg">'

    let usePreconnect = preconnect

    if (i.endsWith('/dist/index.html')) {
      usePreconnect = preconnectHome
      prefetchImg = `
${prefetchImg}
\t<link rel="prefetch" href="/netlify.svg">
\t<link rel="prefetch" href="/bg.png">
`
    }

    // we need the font on development, so the font entry is added in vitepress head
    html = html.replace(`<link href="${font.replace('&', '&amp;')}" rel="stylesheet">`, '')

    html = html.replace(
      /<link rel="stylesheet" href="(.*)">/g,
      `
    ${usePreconnect}
    <link rel="preload" as="style" href="$1" />
    <link rel="stylesheet" href="$1" />
    <link
      rel="preload"
      as="style"
      onload="this.onload=null;this.rel='stylesheet'"
      href="${font}"
    />
    <noscript>
      <link rel="stylesheet" crossorigin="anonymous" href="${font}" />
    </noscript>`).trim()

    if (pwa) {
      html = html.replace(
        '</head>',
        `
\t<link rel="prefetch" href="/manifest.webmanifest">${prefetchImg}
\t<link rel="manifest" href="/manifest.webmanifest">\n</head>`,
      )
    }
    else {
      html = html.replace(
        '</head>',
        `
${prefetchImg}
</head>`,
      )
    }

    // TODO: dark/light theme, don't remove yet
    // html = html.replace(
    //   '</head>',
    //   '\t<link rel="manifest" href="/manifest.webmanifest">\n<script>\n'
    //     + '    (function() {\n'
    //     + '      const prefersDark = window.matchMedia && window.matchMedia(\'(prefers-color-scheme: dark)\').matches\n'
    //     + '      const setting = localStorage.getItem(\'color-schema\') || \'auto\'\n'
    //     + '      if (setting === \'dark\' || (prefersDark && setting !== \'light\'))\n'
    //     + '        document.documentElement.classList.toggle(\'dark\', true)\n'
    //     + '    })()\n'
    //     + '  </script></head>',
    // )

    html = html.replace(
      /aria-hidden="true"/gi,
      'tabindex="-1" aria-hidden="true"',
    ).replace(
      /<img class="logo"/gi,
      '<img class="logo" width="31" height="31"',
    )

    await fs.writeFile(i, html, 'utf-8')
  }))
}


================================================
FILE: docs/.vitepress/style/element-plus.scss
================================================
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
  $colors: (
    'primary': (
      'base': #745847
    )
  )
);

@use 'element-plus/theme-chalk/src/index.scss';


================================================
FILE: docs/.vitepress/style/main.postcss
================================================
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');

:root body {
  font-family:
    'Poppins',
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    Roboto,
    Oxygen,
    Ubuntu,
    Cantarell,
    'Open Sans',
    'Helvetica Neue',
    sans-serif !important;
}
html {
  -webkit-tap-highlight-color: transparent;
}

/* Home Page Toolbar Overrides */
.home-page .VPNavBar {
  border-bottom: none;
}

.home-page .VPNav {
  --vp-nav-bg-color: transparent;
  --vp-c-gutter: transparent;
}

/* Remove the search button from the home page. Keyboard shortcut still works. */
.home-page #docsearch {
  /* display: none; */
}
/* Hide the default footer because FeathersLayout.vue uses a custom footer */
.home-page .VPFooter {
  display: none;
}
/* Hide the white gradient at the bottom of the page */
.aside-curtain {
  display: none;
}

/* TODO: Move to UnoCSS Rules */
body .bg-primary {
  background: var(--primary);
}
body .text-primary-content {
  background: var(--primary-content);
}
body .bg-secondary {
  background: var(--secondary);
}
body .text-secondary-content {
  background: var(--secondary-content);
}
/* For secondary colors, switch the cloud color to charcoal in dark mode */
.dark body .bg-secondary {
  background: var(--accent);
}
.dark body .text-secondary-content {
  background: var(--accent-content);
}

body .bg-neutral {
  background: var(--neutral);
}
body .text-neutral-content {
  color: var(--neutral-content);
}
body .bg-base-100 {
  background: var(--vp-c-bg);
}

.VPNav .logo,
.VPNav .title {
  transition: all 300ms;
}
.VPNav .logo,
.VPNav .title {
  text-transform: lowercase;
}
.home-page .title,
.feathers-footer .title {
  font-size: 32px;
}
.home-page .logo,
.feathers-footer .logo {
  height: 48px;
  fill: blue;
}
.dark .logo {
  filter: invert(1);
}

/* Style the Global Language Select in the left nav */
#app #GlobalLanguageSelect {
  /* @apply pt-2 pb-3;
  border-bottom: 1px solid transparent;
  border-bottom-color: var(--vp-c-divider-light); */
}

#VPSidebarNav:not(:first-child) {
  @apply mt-3;
  border-top-color: var(--vp-c-divider-light);
}

@media (min-width: 960px) {
  .home-page .VPNav,
  .home-page .VPNav.no-sidebar {
    position: static;
    background: none;
  }
  #app.home-page .VPNav {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

/* Overrides */

.VPSocialLink {
  transform: scale(0.9);
}

.vp-doc th,
.vp-doc td {
  padding: 6px 10px;
  border: 1px solid #8882;
}

/* h3 breaks SEO => replaced with h2 with the same size */
.home-content h2 {
  margin-top: 2rem;
  font-size: 1.35rem;
  border-bottom: none;
  margin-bottom: 0;
}

img.resizable-img {
  width: unset;
  height: unset;
}

body[data-language='js'] pre.language-selectable[data-language='ts'] {
  display: none;
}

body[data-language='ts'] pre.language-selectable[data-language='js'] {
  display: none;
}


================================================
FILE: docs/.vitepress/style/vars.postcss
================================================
/**
 * Colors
 * -------------------------------------------------------------------------- */

:root {
  --primary: #ed8a80;                /* congo pink */
  --primary-content: #3C3C3B;        /* charcoal */
  --neutral: #27464F;                /* midnight green */
  --neutral-content: #EDEDED;        /* cloud */
  --secondary: #EDEDED;              /* charcoal */
  --secondary-content: #3C3C3B;      /* cloud */
  --accent: #3C3C3B;                 /* charcoal */
  --accent-content: #EDEDED;         /* cloud */
  --btn-focus-scale: 1.05;

  --vp-c-accent: rgb(218, 180, 11);
  --vp-c-brand: var(--primary);
  --vp-c-brand-light: #FFA69D;
  --vp-c-brand-lighter: #FA978D;
  --vp-c-brand-dark: #e47f75;
  --vp-c-brand-darker: #db6d62;
  --vp-code-block-bg: rgba(125,125,125,0.04);
  --vp-c-green-light: rgb(18, 181, 157);
  --vp-custom-block-tip-border: rgba(18, 181, 157, 0.5);
  --vp-custom-block-tip-bg: rgba(18, 181, 157, 0.1);
  --vp-code-line-highlight-color: rgba(18, 181, 157, 0.2);
  /* --vp-code-line-highlight-color: #eea74b22; */
  /* --vp-code-line-highlight-color: #db6d6232; */
  /* --vp-code-line-highlight-color: #db6d6232; */
  /* --vp-code-line-highlight-color: rgba(0, 0, 0, 0.1); */
}

.dark {
  --vp-code-block-bg: rgba(0,0,0,0.2);
  --vp-code-line-highlight-color: rgba(18, 181, 157, 0.15);
}

/**
 * Component: Button
 * -------------------------------------------------------------------------- */

:root {
  --vp-button-brand-border: var(--vp-c-brand-light);
  --vp-button-brand-text: var(--vp-c-text-dark-1);
  --vp-button-brand-bg: var(--vp-c-brand);
  --vp-button-brand-hover-border: var(--vp-c-brand-light);
  --vp-button-brand-hover-text: var(--vp-c-text-dark-1);
  --vp-button-brand-hover-bg: var(--vp-c-brand-light);
  --vp-button-brand-active-border: var(--vp-c-brand-light);
  --vp-button-brand-active-text: var(--vp-c-text-dark-1);
  --vp-button-brand-active-bg: var(--vp-button-brand-bg);
}

/**
 * Component: Home
 * -------------------------------------------------------------------------- */

 :root {
  --vp-home-hero-name-color: transparent;
  --vp-home-hero-name-background: -webkit-linear-gradient(
    120deg,
    #f850ce 30%,
    #c10893
  );
  --vp-home-hero-image-background-image: linear-gradient(
    -45deg,
    #ffffff8f 30%,
    #ff85f75e
  );
  --vp-home-hero-image-filter: blur(30px);
}

@media (min-width: 640px) {
  :root {
    --vp-home-hero-image-filter: blur(56px);
  }
}

@media (min-width: 960px) {
  :root {
    --vp-home-hero-image-filter: blur(72px);
  }
}


/**
 * Component: Algolia
 * -------------------------------------------------------------------------- */

.DocSearch {
  --docsearch-primary-color: var(--vp-c-brand) !important;
}


================================================
FILE: docs/.vitepress/theme/FeathersLayout.vue
================================================
<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import Footer from '../../components/Footer.vue'
import DatabaseSelect from '../components/DatabaseSelect.vue'

const { Layout } = DefaultTheme
</script>

<template>
  <Layout>
    <template #sidebar-nav-before>
      <DatabaseSelect />
    </template>
  </Layout>
  <Footer />
</template>


================================================
FILE: docs/.vitepress/theme/index.ts
================================================
import googleAnalytics from 'vitepress-plugin-google-analytics'
import 'element-plus/theme-chalk/dark/css-vars.css'

import '../vite-env.d'
import Theme from 'vitepress/theme'
import { inBrowser } from 'vitepress'
import '../style/main.postcss'
import '../style/vars.postcss'
import 'uno.css'
import FeathersLayout from './FeathersLayout.vue'
import Tab from '../components/Tab.vue'
import Tabs from '../components/Tabs.vue'
import Select from '../components/Select.vue'
import Badges from '../components/Badges.vue'
import Logo from '../components/Logo.vue'
import BlockQuote from '../components/BlockQuote.vue'
import LanguageBlock from '../components/LanguageBlock.vue'
import DatabaseBlock from '../components/DatabaseBlock.vue'

import '../style/element-plus.scss'
// import 'element-plus/dist/index.css'

if (inBrowser) import('./pwa')

export default {
  ...Theme,
  Layout: FeathersLayout,
  enhanceApp({ app }) {
    googleAnalytics({
      id: 'G-XQ8CKCD9L6'
    }),
      // Globally register components so they don't have to be imported in the template.
      app.component('Tabs', Tabs)
    app.component('Tab', Tab)
    app.component('Select', Select)
    app.component('Badges', Badges)
    app.component('Logo', Logo)
    app.component('BlockQuote', BlockQuote)
    app.component('LanguageBlock', LanguageBlock)
    app.component('DatabaseBlock', DatabaseBlock)
  }
}


================================================
FILE: docs/.vitepress/theme/pwa.ts
================================================
import { registerSW } from 'virtual:pwa-register'

registerSW({ immediate: true })


================================================
FILE: docs/.vitepress/theme/store.ts
================================================
import { createGlobalState, useStorage } from '@vueuse/core'

export const useGlobalLanguage = createGlobalState(() => useStorage('global-language', 'ts'))
export const useGlobalDb = createGlobalState(() => useStorage('global-db', 'sql'))


================================================
FILE: docs/.vitepress/vite-env.d.ts
================================================
/// <reference types="vite/client" />

declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}


================================================
FILE: docs/api/application.md
================================================
---
outline: deep
---

# Application

<Badges>

[![npm version](https://img.shields.io/npm/v/@feathersjs/authentication-client.svg?style=flat-square)](https://www.npmjs.com/package/@feathersjs/feathers)
[![Changelog](https://img.shields.io/badge/changelog-.md-blue.svg?style=flat-square)](https://github.com/feathersjs/feathers/blob/dove/packages/feathers/CHANGELOG.md)

</Badges>

```
npm install @feathersjs/feathers --save
```

The core `@feathersjs/feathers` module provides the ability to initialize a new Feathers application instance. It works in Node, React Native and the browser (see the [client](./client.md) chapter for more information). Each instance allows for registration and retrieval of [services](./services.md), [hooks](./hooks.md), plugin configuration, and getting and setting configuration options. An initialized Feathers application is referred to as the **app object**.

```ts
import { feathers } from '@feathersjs/feathers'

type ServiceTypes = {
  // Add registered services here
}

// Types for `app.set(name, value)` and `app.get(name)`
type Configuration = {
  port: number
}

const app = feathers<ServiceTypes, Configuration>()
```

## .use(path, service [, options])

`app.use(path, service [, options]) -> app` allows registering a [service object](./services.md) on a given `path`.

```ts
import { feathers, type Id } from '@feathersjs/feathers'

class MessageService {
  async get(id: Id) {
    return {
      id,
      text: `This is the ${id} message!`
    }
  }
}

type ServiceTypes = {
  // Add services path to type mapping here
  messages: MessageService
}

const app = feathers<ServiceTypes>()

// Register a service instance on the app
app.use('messages', new MessageService())

// Get the service and call the service method with the correct types
const message = await app.service('messages').get('test')
```

### path

The `path` is a string that should be URL friendly and may contain `/` as a separator. `path` can also be `/` to register a service at the root level. A path may contain placeholders in the form of `:userId/messages` which will be included in `params.route` by a transport.

### options

The following options are available:

- `methods` (default: `['find', 'get', 'create', 'patch', 'update','remove']`) - A list of official and [custom service methods](services.md#custom-methods) that should be available to clients. When using this option **all** method names that should be available externally must be passed. Those methods will automatically be available for use with [hooks](./hooks).
- `events` - A list of [public custom events sent by this service](./events.md#custom-events)

```ts
import { EventEmitter } from 'events'
import { feathers, type Id } from '@feathersjs/feathers'

// Feathers services will always be event emitters
// but we can also extend it for better type consistency
class MessageService extends EventEmitter {
  async doSomething(data: { message: string }, params: Params) {
    this.emit('something', 'I did something')
    return data
  }

  async get(id: Id) {
    return {
      id,
      text: `This is the ${id} message!`
    }
  }
}

type ServiceTypes = {
  // Add services path to type mapping here
  messages: MessageService
}

const app = feathers<ServiceTypes>()

// Register a service with options
app.use('messages', new MessageService(), {
  methods: ['get', 'doSomething'],
  events: ['something']
})
```

<BlockQuote type="warning" label="Important">

If the `methods` property is `undefined`, all standard methods will be enabled and accessible externally.

</BlockQuote>

## .unuse(path)

`app.unuse(path)` unregisters an existing service on `path` and calls the services [.teardown method](./services.md#teardownapp-path) if it is implemented.

## .service(path)

`app.service(path) -> service` returns the [service object](./services.md) for the given path. Feathers internally creates a new object from each registered service. This means that the object returned by `app.service(path)` will provide the same methods and functionality as your original service object but also functionality added by Feathers and its plugins like [service events](./events.md) and [additional methods](./services.md#feathers-functionality).

```ts
const messageService = app.service('messages')

const message = await messageService.get('test')

console.log(message)

messageService.on('created', (message: Message) => {
  console.log('Created a todo')
})
```

<BlockQuote type="info" label="Note">

Note that a server side `app.service(path)` only allows the original service name (e.g. `app.service(':userId/messages')`) and does not parse placeholders. To get a service with route paramters use [.lookup](#lookuppath)

</BlockQuote>

## .lookup(path)

`app.lookup(path)` allows to look up a full path and will return the `data` (route parameters) and `service` **on the server**.

```ts
const lookup = app.lookup('messages/4321')

// lookup.service -> app.service('messages')
// lookup.data -> { __id: '4321' }

// `lookup.dta` needs to be passed as `params.route`
lookup.service.find({
  route: lookup.data
})
```

Case insensitive lookups can be enabled in the `app` file like this:

```ts
app.routes.caseSensitive = false
```

## .hooks(hooks)

`app.hooks(hooks) -> app` allows registration of application-level hooks. For more information see the [application hooks section in the hooks chapter](./hooks.md#application-hooks).

## .publish([event, ] publisher)

`app.publish([event, ] publisher) -> app` registers a global event publisher. For more information see the [channels publishing](./channels.md#publishing) chapter.

## .configure(callback)

`app.configure(callback) -> app` runs a `callback` function that gets passed the application object. It is used to initialize plugins and can be used to separate your application into different files.

```ts
const setupService = (app: Application) => {
  app.use('/todos', todoService)
}

app.configure(setupService)
```

## .setup([server])

`app.setup([server]) -> Promise<app>` is used to initialize all services by calling each [services .setup(app, path)](services.md#setupapp-path) method (if available).
It will also use the `server` instance passed (e.g. through `http.createServer`) to set up SocketIO (if enabled) and any other provider that might require the server instance. You can register [application setup hooks](./hooks.md#setup-and-teardown) to e.g. set up database connections and other things required to be initialized on startup in a certain order.

Normally `app.setup` will be called automatically when starting the application via [app.listen([port])](#listen-port) but there are cases (like in tests) when it can be called explicitly.

## .teardown([server])

`app.teardown([server]) -> Promise<app>` can be called to gracefully shut down the application. When the app h
Download .txt
gitextract_xwzctsxf/

├── .eslintrc.js
├── .github/
│   ├── FUNDING.yml
│   ├── contributing.md
│   ├── issue_template.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── nodejs.yml
│       └── update-dependencies.yml
├── .gitignore
├── .mocharc.json
├── .nycrc
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── README.md
├── docs/
│   ├── .vitepress/
│   │   ├── components/
│   │   │   ├── Badges.vue
│   │   │   ├── BlockQuote.vue
│   │   │   ├── Contributors.vue
│   │   │   ├── DatabaseBlock.vue
│   │   │   ├── DatabaseSelect.vue
│   │   │   ├── FeaturesList.vue
│   │   │   ├── LanguageBlock.vue
│   │   │   ├── LanguageSelect.vue
│   │   │   ├── ListItem.vue
│   │   │   ├── Logo.vue
│   │   │   ├── Select.vue
│   │   │   ├── Tab.vue
│   │   │   ├── Tabs.vue
│   │   │   └── TeamMember.vue
│   │   ├── components.d.ts
│   │   ├── config.nav.ts
│   │   ├── config.sidebar.ts
│   │   ├── config.ts
│   │   ├── meta.ts
│   │   ├── scripts/
│   │   │   └── assets.ts
│   │   ├── style/
│   │   │   ├── element-plus.scss
│   │   │   ├── main.postcss
│   │   │   └── vars.postcss
│   │   ├── theme/
│   │   │   ├── FeathersLayout.vue
│   │   │   ├── index.ts
│   │   │   ├── pwa.ts
│   │   │   └── store.ts
│   │   └── vite-env.d.ts
│   ├── api/
│   │   ├── application.md
│   │   ├── authentication/
│   │   │   ├── client.md
│   │   │   ├── hook.md
│   │   │   ├── index.md
│   │   │   ├── jwt.md
│   │   │   ├── local.md
│   │   │   ├── oauth.md
│   │   │   ├── service.md
│   │   │   └── strategy.md
│   │   ├── channels.md
│   │   ├── client/
│   │   │   ├── rest.md
│   │   │   └── socketio.md
│   │   ├── client.md
│   │   ├── configuration.md
│   │   ├── databases/
│   │   │   ├── adapters.md
│   │   │   ├── common.md
│   │   │   ├── knex.md
│   │   │   ├── memory.md
│   │   │   ├── mongodb.md
│   │   │   └── querying.md
│   │   ├── errors.md
│   │   ├── events.md
│   │   ├── express.md
│   │   ├── hooks.md
│   │   ├── index.md
│   │   ├── koa.md
│   │   ├── schema/
│   │   │   ├── index.md
│   │   │   ├── resolvers.md
│   │   │   ├── schema.md
│   │   │   ├── typebox.md
│   │   │   └── validators.md
│   │   ├── services.md
│   │   └── socketio.md
│   ├── auto-imports.d.ts
│   ├── comparison.md
│   ├── components/
│   │   ├── CTAButton.vue
│   │   ├── Footer.vue
│   │   ├── FooterList.vue
│   │   ├── HomeCTATextSection.vue
│   │   ├── HomeCreateFirstApp.vue
│   │   ├── HomeFeature1.vue
│   │   ├── HomeFeature1Content.vue
│   │   ├── HomeFeature2.vue
│   │   ├── HomeFeature2Content.vue
│   │   ├── HomeFeatureGrid.vue
│   │   ├── HomeFeatureGridCard.vue
│   │   ├── HomeHero.vue
│   │   ├── HomeIndustryPartners.vue
│   │   └── HomeQuickStart.vue
│   ├── cookbook/
│   │   ├── authentication/
│   │   │   ├── _discord.md
│   │   │   ├── anonymous.md
│   │   │   ├── apiKey.md
│   │   │   ├── auth0.md
│   │   │   ├── facebook.md
│   │   │   ├── firebase.md
│   │   │   ├── google.md
│   │   │   ├── revoke-jwt.md
│   │   │   └── stateless.md
│   │   ├── deploy/
│   │   │   └── docker.md
│   │   ├── express/
│   │   │   ├── file-uploading.md
│   │   │   └── view-engine.md
│   │   ├── general/
│   │   │   ├── client-test.md
│   │   │   └── scaling.md
│   │   └── index.md
│   ├── ecosystem/
│   │   ├── PackageCard.vue
│   │   ├── Packages.vue
│   │   ├── helpers.ts
│   │   ├── index.md
│   │   ├── types.ts
│   │   └── useQuery.ts
│   ├── feathers-vs-firebase.md
│   ├── feathers-vs-loopback.md
│   ├── feathers-vs-meteor.md
│   ├── feathers-vs-nest.md
│   ├── feathers-vs-sails.md
│   ├── guides/
│   │   ├── basics/
│   │   │   ├── authentication.md
│   │   │   ├── generator.md
│   │   │   ├── hooks.md
│   │   │   ├── login.md
│   │   │   ├── schemas.md
│   │   │   ├── services.md
│   │   │   ├── starting.md
│   │   │   └── testing.md
│   │   ├── cli/
│   │   │   ├── app.md
│   │   │   ├── app.test.md
│   │   │   ├── authentication.md
│   │   │   ├── channels.md
│   │   │   ├── client.md
│   │   │   ├── client.test.md
│   │   │   ├── configuration.md
│   │   │   ├── custom-environment-variables.md
│   │   │   ├── databases.md
│   │   │   ├── declarations.md
│   │   │   ├── default.json.md
│   │   │   ├── hook.md
│   │   │   ├── index.md
│   │   │   ├── knexfile.md
│   │   │   ├── log-error.md
│   │   │   ├── logger.md
│   │   │   ├── package.md
│   │   │   ├── prettierrc.md
│   │   │   ├── service.class.md
│   │   │   ├── service.md
│   │   │   ├── service.schemas.md
│   │   │   ├── service.shared.md
│   │   │   ├── service.test.md
│   │   │   ├── tsconfig.md
│   │   │   └── validators.md
│   │   ├── frameworks.md
│   │   ├── frontend/
│   │   │   └── javascript.md
│   │   ├── index.md
│   │   ├── migrating.md
│   │   ├── security.md
│   │   └── whats-new.md
│   ├── help/
│   │   ├── faq.md
│   │   └── index.md
│   ├── index.md
│   ├── package.json
│   ├── public/
│   │   ├── _headers
│   │   ├── _redirects
│   │   ├── feathers-chat.css
│   │   └── robots.txt
│   ├── tsconfig.json
│   └── vite.config.ts
├── generators/
│   ├── package/
│   │   ├── index.tpl.ts
│   │   ├── license.tpl.ts
│   │   ├── package.json.tpl.ts
│   │   ├── readme.md.tpl.ts
│   │   ├── test.tpl.ts
│   │   └── tsconfig.json.tpl.ts
│   └── package.ts
├── lerna.json
├── package.json
├── packages/
│   ├── adapter-commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── declarations.ts
│   │   │   ├── index.ts
│   │   │   ├── query.ts
│   │   │   ├── service.ts
│   │   │   └── sort.ts
│   │   ├── test/
│   │   │   ├── commons.test.ts
│   │   │   ├── fixture.ts
│   │   │   ├── query.test.ts
│   │   │   ├── service.test.ts
│   │   │   └── sort.test.ts
│   │   └── tsconfig.json
│   ├── adapter-tests/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── basic.ts
│   │   │   ├── declarations.ts
│   │   │   ├── index.ts
│   │   │   ├── methods.ts
│   │   │   └── syntax.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── authentication/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authenticate.ts
│   │   │   │   ├── connection.ts
│   │   │   │   ├── event.ts
│   │   │   │   └── index.ts
│   │   │   ├── index.ts
│   │   │   ├── jwt.ts
│   │   │   ├── options.ts
│   │   │   ├── service.ts
│   │   │   └── strategy.ts
│   │   ├── test/
│   │   │   ├── core.test.ts
│   │   │   ├── fixtures.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authenticate.test.ts
│   │   │   │   └── event.test.ts
│   │   │   ├── jwt.test.ts
│   │   │   └── service.test.ts
│   │   └── tsconfig.json
│   ├── authentication-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   ├── hooks/
│   │   │   │   ├── authentication.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── populate-header.ts
│   │   │   ├── index.ts
│   │   │   └── storage.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   └── integration/
│   │   │       ├── commons.ts
│   │   │       ├── express.test.ts
│   │   │       ├── fixture.ts
│   │   │       └── socketio.test.ts
│   │   └── tsconfig.json
│   ├── authentication-local/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── hooks/
│   │   │   │   ├── hash-password.ts
│   │   │   │   └── protect.ts
│   │   │   ├── index.ts
│   │   │   └── strategy.ts
│   │   ├── test/
│   │   │   ├── fixture.ts
│   │   │   ├── hooks/
│   │   │   │   ├── hash-password.test.ts
│   │   │   │   └── protect.test.ts
│   │   │   └── strategy.test.ts
│   │   └── tsconfig.json
│   ├── authentication-oauth/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   ├── service.ts
│   │   │   ├── strategy.ts
│   │   │   └── utils.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   ├── service.test.ts
│   │   │   ├── strategy.test.ts
│   │   │   ├── utils/
│   │   │   │   ├── fixture.ts
│   │   │   │   └── provider.ts
│   │   │   └── utils.test.ts
│   │   └── tsconfig.json
│   ├── cli/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── feathers.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── cli.test.ts
│   │   └── tsconfig.json
│   ├── client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── core.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── core.ts
│   │   │   └── feathers.ts
│   │   ├── test/
│   │   │   ├── fetch.test.ts
│   │   │   ├── fixture.ts
│   │   │   ├── socketio.test.ts
│   │   │   └── superagent.test.ts
│   │   ├── tsconfig.json
│   │   └── webpack/
│   │       ├── core.js
│   │       ├── create-config.js
│   │       └── feathers.js
│   ├── commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── debug.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── debug.test.ts
│   │   │   ├── module.test.ts
│   │   │   └── utils.test.ts
│   │   └── tsconfig.json
│   ├── configuration/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── config/
│   │   │   │   └── default.json
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── create-feathers/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── bin/
│   │   │   └── create-feathers.js
│   │   └── package.json
│   ├── errors/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── express/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── public/
│   │   │   ├── 401.html
│   │   │   ├── 404.html
│   │   │   └── default.html
│   │   ├── src/
│   │   │   ├── authentication.ts
│   │   │   ├── declarations.ts
│   │   │   ├── handlers.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   ├── test/
│   │   │   ├── authentication.test.ts
│   │   │   ├── error-handler.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── not-found-handler.test.ts
│   │   │   └── rest.test.ts
│   │   └── tsconfig.json
│   ├── feathers/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── application.ts
│   │   │   ├── declarations.ts
│   │   │   ├── events.ts
│   │   │   ├── hooks.ts
│   │   │   ├── index.ts
│   │   │   ├── service.ts
│   │   │   └── version.ts
│   │   ├── test/
│   │   │   ├── application.test.ts
│   │   │   ├── declarations.test.ts
│   │   │   ├── events.test.ts
│   │   │   └── hooks/
│   │   │       ├── after.test.ts
│   │   │       ├── app.test.ts
│   │   │       ├── around.test.ts
│   │   │       ├── before.test.ts
│   │   │       ├── error.test.ts
│   │   │       └── hooks.test.ts
│   │   └── tsconfig.json
│   ├── generators/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── app.test.tpl.ts
│   │   │   │       ├── app.tpl.ts
│   │   │   │       ├── channels.tpl.ts
│   │   │   │       ├── client.test.tpl.ts
│   │   │   │       ├── client.tpl.ts
│   │   │   │       ├── configuration.tpl.ts
│   │   │   │       ├── declarations.tpl.ts
│   │   │   │       ├── gitignore.tpl.ts
│   │   │   │       ├── index.html.tpl.ts
│   │   │   │       ├── index.tpl.ts
│   │   │   │       ├── logger.tpl.ts
│   │   │   │       ├── package.json.tpl.ts
│   │   │   │       ├── prettierrc.tpl.ts
│   │   │   │       ├── readme.md.tpl.ts
│   │   │   │       ├── services.tpl.ts
│   │   │   │       ├── tsconfig.json.tpl.ts
│   │   │   │       └── validators.tpl.ts
│   │   │   ├── authentication/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── authentication.tpl.ts
│   │   │   │       ├── client.test.tpl.ts
│   │   │   │       ├── config.tpl.ts
│   │   │   │       └── declarations.tpl.ts
│   │   │   ├── commons.ts
│   │   │   ├── connection/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       ├── knex.tpl.ts
│   │   │   │       └── mongodb.tpl.ts
│   │   │   ├── hook/
│   │   │   │   ├── index.ts
│   │   │   │   └── templates/
│   │   │   │       └── hook.tpl.ts
│   │   │   ├── index.ts
│   │   │   └── service/
│   │   │       ├── index.ts
│   │   │       ├── templates/
│   │   │       │   ├── client.tpl.ts
│   │   │       │   ├── schema.json.tpl.ts
│   │   │       │   ├── schema.typebox.tpl.ts
│   │   │       │   ├── service.tpl.ts
│   │   │       │   ├── shared.tpl.ts
│   │   │       │   └── test.tpl.ts
│   │   │       └── type/
│   │   │           ├── custom.tpl.ts
│   │   │           ├── knex.tpl.ts
│   │   │           └── mongodb.tpl.ts
│   │   ├── test/
│   │   │   ├── build/
│   │   │   │   └── .gitkeep
│   │   │   ├── commons.test.ts
│   │   │   ├── generators.test.ts
│   │   │   └── utils.ts
│   │   └── tsconfig.json
│   ├── knex/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter.ts
│   │   │   ├── declarations.ts
│   │   │   ├── error-handler.ts
│   │   │   ├── hooks.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── connection.ts
│   │   │   ├── error-handler.test.ts
│   │   │   ├── index.test.ts
│   │   │   └── overrides.test.ts
│   │   └── tsconfig.json
│   ├── koa/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── authentication.ts
│   │   │   ├── declarations.ts
│   │   │   ├── handlers.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   ├── test/
│   │   │   ├── app.fixture.ts
│   │   │   ├── authentication.test.ts
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── memory/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── mongodb/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── adapter.ts
│   │   │   ├── converters.ts
│   │   │   ├── error-handler.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── converters.test.ts
│   │   │   └── index.test.ts
│   │   └── tsconfig.json
│   ├── rest-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── axios.ts
│   │   │   ├── base.ts
│   │   │   ├── fetch.ts
│   │   │   ├── index.ts
│   │   │   └── superagent.ts
│   │   ├── test/
│   │   │   ├── axios.test.ts
│   │   │   ├── declarations.ts
│   │   │   ├── fetch.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── server.ts
│   │   │   └── superagent.test.ts
│   │   └── tsconfig.json
│   ├── schema/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── default-schemas.ts
│   │   │   ├── hooks/
│   │   │   │   ├── index.ts
│   │   │   │   ├── resolve.ts
│   │   │   │   └── validate.ts
│   │   │   ├── index.ts
│   │   │   ├── json-schema.ts
│   │   │   ├── resolver.ts
│   │   │   └── schema.ts
│   │   ├── test/
│   │   │   ├── fixture.ts
│   │   │   ├── hooks.test.ts
│   │   │   ├── json-schema.test.ts
│   │   │   ├── resolver.test.ts
│   │   │   └── schema.test.ts
│   │   └── tsconfig.json
│   ├── socketio/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   └── middleware.ts
│   │   ├── test/
│   │   │   ├── events.ts
│   │   │   ├── index.test.ts
│   │   │   └── methods.ts
│   │   └── tsconfig.json
│   ├── socketio-client/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   ├── index.test.ts
│   │   │   └── server.ts
│   │   └── tsconfig.json
│   ├── tests/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── resources/
│   │   │   ├── certificate.pem
│   │   │   └── privatekey.pem
│   │   ├── src/
│   │   │   ├── client.ts
│   │   │   ├── fixture.ts
│   │   │   ├── index.ts
│   │   │   └── rest.ts
│   │   └── tsconfig.json
│   ├── transport-commons/
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── client.d.ts
│   │   ├── client.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── channels/
│   │   │   │   ├── channel/
│   │   │   │   │   ├── base.ts
│   │   │   │   │   └── combined.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── mixins.ts
│   │   │   ├── client.ts
│   │   │   ├── http.ts
│   │   │   ├── index.ts
│   │   │   ├── routing/
│   │   │   │   ├── index.ts
│   │   │   │   └── router.ts
│   │   │   └── socket/
│   │   │       ├── index.ts
│   │   │       └── utils.ts
│   │   ├── test/
│   │   │   ├── channels/
│   │   │   │   ├── channel.test.ts
│   │   │   │   ├── dispatch.test.ts
│   │   │   │   └── index.test.ts
│   │   │   ├── client.test.ts
│   │   │   ├── http.test.ts
│   │   │   ├── routing/
│   │   │   │   ├── index.test.ts
│   │   │   │   └── router.test.ts
│   │   │   └── socket/
│   │   │       ├── index.test.ts
│   │   │       └── utils.test.ts
│   │   └── tsconfig.json
│   └── typebox/
│       ├── CHANGELOG.md
│       ├── LICENSE
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── default-schemas.ts
│       │   └── index.ts
│       ├── test/
│       │   └── index.test.ts
│       └── tsconfig.json
└── tsconfig.json
Download .txt
SYMBOL INDEX (1024 symbols across 147 files)

FILE: docs/.vitepress/components.d.ts
  type GlobalComponents (line 13) | interface GlobalComponents {

FILE: docs/.vitepress/theme/index.ts
  method enhanceApp (line 28) | enhanceApp({ app }) {

FILE: docs/ecosystem/helpers.ts
  function nFormatter (line 1) | function nFormatter(num: number, digits?: number) {

FILE: docs/ecosystem/types.ts
  type PackageInput (line 1) | type PackageInput = {
  type PackagesInput (line 6) | type PackagesInput = Record<string, PackageInput>
  type PackageOutput (line 8) | type PackageOutput = {

FILE: docs/ecosystem/useQuery.ts
  type MaybeArray (line 4) | type MaybeArray<T> = T | T[]
  type FieldType (line 6) | type FieldType = MaybeArray<'string' | 'number' | 'boolean'>
  function getQuery (line 9) | function getQuery() {
  function getFromUrl (line 17) | function getFromUrl() {
  function setToUrl (line 38) | function setToUrl(val: any) {

FILE: docs/vite.config.ts
  constant PWA (line 24) | const PWA = VitePWA({
  method buildEnd (line 125) | async buildEnd() {
  function IncludesPlugin (line 136) | function IncludesPlugin(): Plugin {

FILE: generators/package.ts
  type ModuleContext (line 4) | interface ModuleContext extends PinionContext {

FILE: generators/package/index.tpl.ts
  type Context (line 4) | interface Context extends ModuleContext {}

FILE: generators/package/license.tpl.ts
  type Context (line 4) | interface Context extends ModuleContext {}

FILE: generators/package/package.json.tpl.ts
  type Context (line 4) | interface Context extends ModuleContext {}

FILE: generators/package/test.tpl.ts
  type Context (line 4) | interface Context extends ModuleContext {}

FILE: packages/adapter-commons/src/declarations.ts
  type FilterQueryOptions (line 3) | type FilterQueryOptions = {
  type QueryFilter (line 9) | type QueryFilter = (value: any, options: FilterQueryOptions) => any
  type FilterSettings (line 11) | type FilterSettings = {
  type AdapterServiceOptions (line 18) | interface AdapterServiceOptions {
  type AdapterQuery (line 54) | interface AdapterQuery extends Query {
  type AdapterParams (line 63) | interface AdapterParams<
  type InternalServiceMethods (line 83) | interface InternalServiceMethods<

FILE: packages/adapter-commons/src/index.ts
  function select (line 12) | function select(params: Params, ...otherFields: string[]) {

FILE: packages/adapter-commons/src/query.ts
  constant OPERATORS (line 90) | const OPERATORS = ['$in', '$nin', '$lt', '$lte', '$gt', '$gte', '$ne', '...
  constant FILTERS (line 92) | const FILTERS: FilterSettings = {
  function filterQuery (line 143) | function filterQuery(_query: Query, options: FilterQueryOptions = {}) {

FILE: packages/adapter-commons/src/service.ts
  constant VALIDATED (line 10) | const VALIDATED = Symbol.for('@feathersjs/adapter/sanitized')
  method constructor (line 32) | constructor(options: Options) {
  method id (line 44) | get id() {
  method events (line 48) | get events() {
  method allowsMulti (line 58) | allowsMulti(method: string, params: ServiceParams = {} as ServiceParams) {
  method getOptions (line 81) | getOptions(params: ServiceParams): Options {
  method sanitizeQuery (line 100) | async sanitizeQuery(params: ServiceParams = {} as ServiceParams): Promis...

FILE: packages/adapter-commons/src/sort.ts
  function compareNSB (line 4) | function compareNSB(a: number | string | boolean, b: number | string | b...
  function compareArrays (line 12) | function compareArrays(a: any[], b: any[]): 0 | 1 | -1 {
  function compare (line 25) | function compare(
  function sorter (line 106) | function sorter($sort: { [key: string]: -1 | 1 }) {

FILE: packages/adapter-commons/test/fixture.ts
  type Data (line 5) | type Data = {
  class MethodBase (line 9) | class MethodBase extends AdapterBase<Data, Data, Partial<Data>, AdapterP...
    method _find (line 12) | async _find(params?: AdapterParams): Promise<Data | Data[] | Paginated...
    method _get (line 25) | async _get(id: Id, _params?: AdapterParams): Promise<Data> {
    method _create (line 32) | async _create(data: Data | Data[], _params?: AdapterParams): Promise<D...
    method _update (line 46) | async _update(id: Id, _data: Data, _params?: AdapterParams) {
    method _patch (line 53) | async _patch(id: NullableId, _data: Partial<Data>, _params?: AdapterPa...
    method _remove (line 64) | async _remove(id: NullableId, _params?: AdapterParams) {
  class MethodService (line 73) | class MethodService extends MethodBase {
    method find (line 74) | find(params?: AdapterParams): Promise<Data | Data[] | Paginated<Data>> {
    method get (line 78) | get(id: Id, params?: AdapterParams): Promise<Data> {
    method create (line 84) | async create(data: Data | Data[], params?: AdapterParams): Promise<Dat...
    method update (line 92) | async update(id: Id, data: Data, params?: AdapterParams) {
    method patch (line 100) | async patch(id: NullableId, data: Partial<Data>, params?: AdapterParam...
    method remove (line 108) | async remove(id: NullableId, params?: AdapterParams) {

FILE: packages/adapter-commons/test/service.test.ts
  constant METHODS (line 6) | const METHODS: ['find', 'get', 'create', 'update', 'patch', 'remove'] = [

FILE: packages/adapter-tests/src/declarations.ts
  type AdapterTest (line 1) | type AdapterTest = (name: AdapterTestName, runner: any) => void
  type AdapterBasicTest (line 3) | type AdapterBasicTest = (name: AdapterBasicTestName, runner: any) => void
  type AdapterMethodsTest (line 4) | type AdapterMethodsTest = (name: AdapterMethodsTestName, runner: any) =>...
  type AdapterSyntaxTest (line 5) | type AdapterSyntaxTest = (name: AdapterSyntaxTestName, runner: any) => void
  type AdapterTestName (line 7) | type AdapterTestName = AdapterBasicTestName | AdapterMethodsTestName | A...
  type AdapterBasicTestName (line 9) | type AdapterBasicTestName =
  type AdapterMethodsTestName (line 26) | type AdapterMethodsTestName =
  type AdapterSyntaxTestName (line 71) | type AdapterSyntaxTestName =

FILE: packages/adapter-tests/src/methods.ts
  method store (line 725) | get store() {
  method find (line 729) | find() {
  method get (line 732) | get() {
  method create (line 735) | create() {
  method update (line 738) | update() {
  method patch (line 741) | patch() {
  method remove (line 744) | remove() {

FILE: packages/authentication-client/src/core.ts
  class OauthError (line 6) | class OauthError extends FeathersError {
    method constructor (line 7) | constructor(message: string, data?: any) {
  type ClientConstructor (line 25) | type ClientConstructor = new (
  type AuthenticationClientOptions (line 30) | interface AuthenticationClientOptions {
  class AuthenticationClient (line 42) | class AuthenticationClient {
    method constructor (line 47) | constructor(app: Application, options: AuthenticationClientOptions) {
    method service (line 61) | get service() {
    method storage (line 65) | get storage() {
    method handleSocket (line 69) | handleSocket(socket: any) {
    method getFromLocation (line 86) | getFromLocation(location: Location) {
    method setAccessToken (line 112) | setAccessToken(accessToken: string) {
    method getAccessToken (line 121) | getAccessToken(): Promise<string | null> {
    method removeAccessToken (line 135) | removeAccessToken() {
    method reset (line 144) | reset() {
    method handleError (line 151) | handleError(error: FeathersError, type: 'authenticate' | 'logout') {
    method reAuthenticate (line 172) | reAuthenticate(force = false, strategy?: string, authParams?: Params):...
    method authenticate (line 204) | authenticate(authentication?: AuthenticationRequest, params?: Params):...
    method logout (line 233) | logout(): Promise<AuthenticationResult | null> {

FILE: packages/authentication-client/src/index.ts
  type Application (line 8) | interface Application<Services, Settings> {
  type ClientConstructor (line 29) | type ClientConstructor = new (

FILE: packages/authentication-client/src/storage.ts
  type Storage (line 1) | interface Storage {
  class MemoryStorage (line 7) | class MemoryStorage implements Storage {
    method constructor (line 10) | constructor() {
    method getItem (line 14) | getItem(key: string) {
    method setItem (line 18) | setItem(key: string, value: any) {
    method removeItem (line 22) | removeItem(key: string) {
  class StorageWrapper (line 31) | class StorageWrapper implements Storage {
    method constructor (line 34) | constructor(storage: any) {
    method getItem (line 38) | getItem(key: string) {
    method setItem (line 42) | setItem(key: string, value: any) {
    method removeItem (line 46) | removeItem(key: string) {

FILE: packages/authentication-client/test/index.test.ts
  method create (line 20) | async create(data: any) {
  method remove (line 32) | async remove(id) {
  method find (line 41) | async find(params) {

FILE: packages/authentication-client/test/integration/fixture.ts
  method find (line 45) | find(params) {
  method before (line 55) | before(context: HookContext) {

FILE: packages/authentication-local/src/hooks/hash-password.ts
  type HashPasswordOptions (line 11) | interface HashPasswordOptions {
  function hashPassword (line 23) | function hashPassword(field: string, options: HashPasswordOptions = {}) {

FILE: packages/authentication-local/src/strategy.ts
  class LocalStrategy (line 11) | class LocalStrategy extends AuthenticationBaseStrategy {
    method verifyConfiguration (line 12) | verifyConfiguration() {
    method configuration (line 22) | get configuration() {
    method getEntityQuery (line 38) | async getEntityQuery(query: Query, _params: Params) {
    method findEntity (line 45) | async findEntity(username: string, params: Params) {
    method getEntity (line 78) | async getEntity(result: any, params: Params) {
    method comparePassword (line 96) | async comparePassword(entity: any, password: string) {
    method hashPassword (line 118) | async hashPassword(password: string, _params: Params) {
    method authenticate (line 122) | async authenticate(data: AuthenticationRequest, params: Params) {

FILE: packages/authentication-local/test/fixture.ts
  type ServiceTypes (line 8) | type ServiceTypes = {
  function createApplication (line 13) | function createApplication(

FILE: packages/authentication-local/test/hooks/protect.test.ts
  function testOmit (line 7) | function testOmit(title: string, property: string) {

FILE: packages/authentication-oauth/src/service.ts
  type GrantResponse (line 13) | type GrantResponse = {
  type OAuthParams (line 19) | type OAuthParams = Omit<Params, 'route'> & {
  class OAuthError (line 27) | class OAuthError extends FeathersError {
    method constructor (line 28) | constructor(
  class OAuthService (line 64) | class OAuthService {
    method constructor (line 67) | constructor(
    method handler (line 76) | async handler(method: string, params: OAuthParams, body?: any, overrid...
    method authenticate (line 99) | async authenticate(params: OAuthParams, result: GrantResponse) {
    method find (line 164) | async find(params: OAuthParams) {
    method get (line 187) | async get(override: string, params: OAuthParams) {
    method create (line 193) | async create(data: any, params: OAuthParams) {
  class OAuthCallbackService (line 198) | class OAuthCallbackService {
    method constructor (line 199) | constructor(public service: OAuthService) {}
    method find (line 201) | async find(params: OAuthParams) {
    method create (line 207) | async create(data: any, params: OAuthParams) {

FILE: packages/authentication-oauth/src/strategy.ts
  type OAuthProfile (line 14) | interface OAuthProfile {
  class OAuthStrategy (line 19) | class OAuthStrategy extends AuthenticationBaseStrategy {
    method configuration (line 20) | get configuration() {
    method entityId (line 32) | get entityId(): string {
    method getEntityQuery (line 38) | async getEntityQuery(profile: OAuthProfile, _params: Params) {
    method getEntityData (line 44) | async getEntityData(profile: OAuthProfile, _existingEntity: any, _para...
    method getProfile (line 50) | async getProfile(data: AuthenticationRequest, _params: Params) {
    method getCurrentEntity (line 54) | async getCurrentEntity(params: Params) {
    method getAllowedOrigin (line 70) | async getAllowedOrigin(params?: Params) {
    method getRedirect (line 97) | async getRedirect(
    method findEntity (line 129) | async findEntity(profile: OAuthProfile, params: Params) {
    method createEntity (line 145) | async createEntity(profile: OAuthProfile, params: Params) {
    method updateEntity (line 153) | async updateEntity(entity: any, profile: OAuthProfile, params: Params) {
    method getEntity (line 162) | async getEntity(result: any, params: Params) {
    method authenticate (line 180) | async authenticate(authentication: AuthenticationRequest, originalPara...

FILE: packages/authentication-oauth/src/utils.ts
  type OauthSetupSettings (line 14) | interface OauthSetupSettings {

FILE: packages/authentication-oauth/test/utils/fixture.ts
  type ServiceTypes (line 13) | interface ServiceTypes {
  class TestOAuthStrategy (line 18) | class TestOAuthStrategy extends OAuthStrategy {
    method authenticate (line 19) | async authenticate(data: AuthenticationRequest, params: Authentication...

FILE: packages/authentication/src/core.ts
  type AuthenticationResult (line 12) | interface AuthenticationResult {
  type AuthenticationRequest (line 16) | interface AuthenticationRequest {
  type AuthenticationParams (line 21) | interface AuthenticationParams extends Params {
  type ConnectionEvent (line 29) | type ConnectionEvent = 'login' | 'logout' | 'disconnect'
  type AuthenticationStrategy (line 31) | interface AuthenticationStrategy {
  type JwtVerifyOptions (line 88) | interface JwtVerifyOptions extends VerifyOptions {
  class AuthenticationBase (line 95) | class AuthenticationBase {
    method constructor (line 108) | constructor(app: Application, configKey = 'authentication', options = ...
    method configuration (line 125) | get configuration(): AuthenticationConfiguration {
    method strategyNames (line 133) | get strategyNames() {
    method register (line 143) | register(name: string, strategy: AuthenticationStrategy) {
    method getStrategies (line 174) | getStrategies(...names: string[]) {
    method getStrategy (line 184) | getStrategy(name: string) {
    method createAccessToken (line 195) | async createAccessToken(
    method verifyAccessToken (line 221) | async verifyAccessToken(accessToken: string, optsOverride?: JwtVerifyO...
    method authenticate (line 249) | async authenticate(
    method handleConnection (line 276) | async handleConnection(event: ConnectionEvent, connection: any, authRe...
    method parse (line 293) | async parse(req: IncomingMessage, res: ServerResponse, ...names: strin...
    method setup (line 309) | async setup() {

FILE: packages/authentication/src/hooks/authenticate.ts
  type AuthenticateHookSettings (line 7) | interface AuthenticateHookSettings {

FILE: packages/authentication/src/jwt.ts
  constant SPLIT_HEADER (line 13) | const SPLIT_HEADER = /(\S+)\s+(\S+)/
  class JWTStrategy (line 15) | class JWTStrategy extends AuthenticationBaseStrategy {
    method configuration (line 18) | get configuration() {
    method handleConnection (line 32) | async handleConnection(
    method verifyConfiguration (line 80) | verifyConfiguration() {
    method getEntityQuery (line 96) | async getEntityQuery(_params: Params) {
    method getEntity (line 106) | async getEntity(id: string, params: Params) {
    method getEntityId (line 130) | async getEntityId(authResult: AuthenticationResult, _params: Params) {
    method authenticate (line 134) | async authenticate(authentication: AuthenticationRequest, params: Auth...
    method parse (line 165) | async parse(req: IncomingMessage): Promise<{

FILE: packages/authentication/src/options.ts
  type AuthenticationConfiguration (line 16) | type AuthenticationConfiguration = FromSchema<typeof authenticationSetti...

FILE: packages/authentication/src/service.ts
  type FeathersApplication (line 18) | interface FeathersApplication<Services, Settings> {
  type Params (line 29) | interface Params {
  class AuthenticationService (line 35) | class AuthenticationService
    method constructor (line 39) | constructor(app: any, configKey = 'authentication', options = {}) {
    method getPayload (line 69) | async getPayload(_authResult: AuthenticationResult, params: Authentica...
    method getTokenOptions (line 83) | async getTokenOptions(authResult: AuthenticationResult, params: Authen...
    method create (line 110) | async create(data: AuthenticationRequest, params?: AuthenticationParam...
    method remove (line 151) | async remove(id: string | null, params?: AuthenticationParams) {
    method setup (line 168) | async setup() {

FILE: packages/authentication/src/strategy.ts
  class AuthenticationBaseStrategy (line 4) | class AuthenticationBaseStrategy implements AuthenticationStrategy {
    method setAuthentication (line 9) | setAuthentication(auth: AuthenticationBase) {
    method setApplication (line 13) | setApplication(app: Application) {
    method setName (line 17) | setName(name: string) {
    method configuration (line 21) | get configuration(): any {
    method entityService (line 25) | get entityService(): Service {

FILE: packages/authentication/test/core.test.ts
  constant UUID (line 12) | const UUID = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/
  method authenticate (line 30) | async authenticate(data: AuthenticationRequest) {
  type Settings (line 42) | type Settings = Infer<typeof settingsSchema>

FILE: packages/authentication/test/fixtures.ts
  type MockRequest (line 8) | interface MockRequest extends IncomingMessage {
  class Strategy1 (line 13) | class Strategy1 extends AuthenticationBaseStrategy {
    method authenticate (line 22) | async authenticate(authentication: AuthenticationRequest) {
    method parse (line 30) | async parse(req: MockRequest) {
  class Strategy2 (line 39) | class Strategy2 extends AuthenticationBaseStrategy {
    method authenticate (line 48) | authenticate(authentication: AuthenticationRequest, params: Params) {
    method parse (line 58) | async parse(req: MockRequest) {

FILE: packages/authentication/test/hooks/authenticate.test.ts
  method find (line 40) | async find() {
  method get (line 44) | async get(_id: string | number, params: Params) {

FILE: packages/authentication/test/hooks/event.test.ts
  method create (line 9) | async create(data: AuthenticationRequest) {
  method remove (line 13) | async remove(id: string) {

FILE: packages/authentication/test/jwt.test.ts
  method get (line 47) | async get(id, params) {

FILE: packages/authentication/test/service.test.ts
  constant UUID (line 13) | const UUID = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/
  method get (line 299) | async get() {

FILE: packages/client/test/fixture.ts
  method value (line 7) | value() {
  class TodoService (line 20) | class TodoService extends MemoryService {
    method get (line 21) | async get(id: Id, params: Params) {
  method remove (line 63) | remove(hook: HookContext<any, any>) {

FILE: packages/commons/src/debug.ts
  type DebugFunction (line 2) | type DebugFunction = (...args: any[]) => void
  type DebugInitializer (line 3) | type DebugInitializer = (name: string) => DebugFunction
  function noopDebug (line 7) | function noopDebug(): DebugFunction {
  function setDebug (line 13) | function setDebug(debug: DebugInitializer) {
  function createDebug (line 21) | function createDebug(name: string) {

FILE: packages/commons/src/index.ts
  function stripSlashes (line 2) | function stripSlashes(name: string) {
  type KeyValueCallback (line 6) | type KeyValueCallback<T> = (value: any, key: string) => T
  method each (line 10) | each(obj: any, callback: KeyValueCallback<void>) {
  method some (line 18) | some(value: any, callback: KeyValueCallback<boolean>) {
  method every (line 24) | every(value: any, callback: KeyValueCallback<boolean>) {
  method keys (line 30) | keys(obj: any) {
  method values (line 34) | values(obj: any) {
  method isMatch (line 38) | isMatch(obj: any, item: any) {
  method isEmpty (line 42) | isEmpty(obj: any) {
  method isObject (line 46) | isObject(item: any) {
  method isObjectOrArray (line 50) | isObjectOrArray(value: any) {
  method extend (line 54) | extend(first: any, ...rest: any[]) {
  method omit (line 58) | omit(obj: any, ...keys: string[]) {
  method pick (line 64) | pick(source: any, ...keys: string[]) {
  method merge (line 75) | merge(target: any, source: any) {
  function isPromise (line 94) | function isPromise(result: any) {
  function createSymbol (line 98) | function createSymbol(name: string) {

FILE: packages/commons/test/utils.test.ts
  method then (line 19) | then() {

FILE: packages/errors/src/index.ts
  type FeathersErrorJSON (line 1) | interface FeathersErrorJSON {
  type DynamicError (line 10) | type DynamicError = Error & { [key: string]: any }
  type ErrorMessage (line 11) | type ErrorMessage = null | string | DynamicError | { [key: string]: any ...
  type ErrorProperties (line 13) | interface ErrorProperties extends Omit<FeathersErrorJSON, 'message'> {
  class FeathersError (line 17) | class FeathersError extends Error {
    method constructor (line 24) | constructor(err: ErrorMessage, name: string, code: number, className: ...
    method toJSON (line 47) | toJSON() {
  class BadRequest (line 67) | class BadRequest extends FeathersError {
    method constructor (line 68) | constructor(message?: ErrorMessage, data?: any) {
  class NotAuthenticated (line 74) | class NotAuthenticated extends FeathersError {
    method constructor (line 75) | constructor(message?: ErrorMessage, data?: any) {
  class PaymentError (line 81) | class PaymentError extends FeathersError {
    method constructor (line 82) | constructor(message?: ErrorMessage, data?: any) {
  class Forbidden (line 88) | class Forbidden extends FeathersError {
    method constructor (line 89) | constructor(message?: ErrorMessage, data?: any) {
  class NotFound (line 95) | class NotFound extends FeathersError {
    method constructor (line 96) | constructor(message?: ErrorMessage, data?: any) {
  class MethodNotAllowed (line 102) | class MethodNotAllowed extends FeathersError {
    method constructor (line 103) | constructor(message?: ErrorMessage, data?: any) {
  class NotAcceptable (line 109) | class NotAcceptable extends FeathersError {
    method constructor (line 110) | constructor(message?: ErrorMessage, data?: any) {
  class Timeout (line 116) | class Timeout extends FeathersError {
    method constructor (line 117) | constructor(message?: ErrorMessage, data?: any) {
  class Conflict (line 123) | class Conflict extends FeathersError {
    method constructor (line 124) | constructor(message?: ErrorMessage, data?: any) {
  class Gone (line 130) | class Gone extends FeathersError {
    method constructor (line 131) | constructor(message?: ErrorMessage, data?: any) {
  class LengthRequired (line 137) | class LengthRequired extends FeathersError {
    method constructor (line 138) | constructor(message?: ErrorMessage, data?: any) {
  class Unprocessable (line 144) | class Unprocessable extends FeathersError {
    method constructor (line 145) | constructor(message?: ErrorMessage, data?: any) {
  class TooManyRequests (line 151) | class TooManyRequests extends FeathersError {
    method constructor (line 152) | constructor(message?: ErrorMessage, data?: any) {
  class GeneralError (line 158) | class GeneralError extends FeathersError {
    method constructor (line 159) | constructor(message?: ErrorMessage, data?: any) {
  class NotImplemented (line 165) | class NotImplemented extends FeathersError {
    method constructor (line 166) | constructor(message?: ErrorMessage, data?: any) {
  class BadGateway (line 172) | class BadGateway extends FeathersError {
    method constructor (line 173) | constructor(message?: ErrorMessage, data?: any) {
  class Unavailable (line 179) | class Unavailable extends FeathersError {
    method constructor (line 180) | constructor(message?: ErrorMessage, data?: any) {
  type Errors (line 185) | interface Errors {
  function convert (line 258) | function convert(error: any) {

FILE: packages/express/src/authentication.ts
  type AuthenticationSettings (line 16) | type AuthenticationSettings = {
  function parseAuthentication (line 21) | function parseAuthentication(settings: AuthenticationSettings = {}): Req...
  function authenticate (line 49) | function authenticate(

FILE: packages/express/src/declarations.ts
  type ExpressUseHandler (line 12) | interface ExpressUseHandler<T, Services> {
  type ExpressOverrides (line 27) | interface ExpressOverrides<Services> {
  type Application (line 36) | type Application<Services = any, Settings = any> = Omit<Express, 'listen...
  type ServiceOptions (line 41) | interface ServiceOptions {
  type Request (line 51) | interface Request {
  type Response (line 56) | interface Response {
  type IRouterMatcher (line 61) | interface IRouterMatcher<T> {

FILE: packages/express/src/handlers.ts
  function notFound (line 11) | function notFound({ verbose = false } = {}): RequestHandler {
  type ErrorHandlerOptions (line 20) | type ErrorHandlerOptions = {
  function errorHandler (line 27) | function errorHandler(_options: ErrorHandlerOptions = {}): ErrorRequestH...

FILE: packages/express/src/index.ts
  function feathersExpress (line 50) | function feathersExpress<S = any, C = any>(

FILE: packages/express/src/rest.ts
  method 'application/json' (line 78) | 'application/json'() {
  type RestOptions (line 84) | type RestOptions = {

FILE: packages/express/test/authentication.test.ts
  method get (line 31) | get(id, params) {

FILE: packages/express/test/error-handler.test.ts
  method set (line 75) | set() {}
  method status (line 76) | status(code: number) {
  method sendFile (line 91) | sendFile(f: any) {
  method set (line 141) | set() {}
  method status (line 142) | status(code: number) {
  method json (line 157) | json(obj: any) {

FILE: packages/express/test/index.test.ts
  method get (line 15) | async get(id: Id) {
  type Config (line 28) | type Config = {
  method get (line 117) | get(hook: HookContext) {
  method get (line 125) | get(hook: HookContext) {
  method get (line 165) | async get(id: Id) {
  method setup (line 169) | async setup(appParam, path) {
  method get (line 203) | async get(id: Id) {
  method get (line 226) | async get(id: Id) {
  method get (line 248) | async get(name: Id) {

FILE: packages/express/test/rest.test.ts
  method 'text/plain' (line 39) | 'text/plain'() {
  method get (line 46) | async get(id: Id) {
  method get (line 68) | async get(id: Id) {
  method get (line 94) | async get(id: Id) {
  method create (line 98) | async create(data: any) {
  method get (line 151) | async get(id) {
  method after (line 165) | after(hook: HookContext) {
  method get (line 192) | async get() {
  method after (line 198) | after(hook: HookContext) {
  method get (line 215) | async get() {
  method after (line 221) | after(hook: HookContext) {
  method get (line 233) | async get() {
  method after (line 239) | after(hook: HookContext) {
  method get (line 258) | async get() {
  method get (line 302) | async get(_id: Id, params: Params) {
  method create (line 348) | async create(data: any) {
  method create (line 384) | async create(data: any) {
  method create (line 430) | async create(data) {
  method get (line 508) | async get(id: Id) {
  method patch (line 514) | async patch() {
  method find (line 518) | async find() {
  method get (line 596) | async get(id: Id, params: Params) {

FILE: packages/feathers/src/application.ts
  class Feathers (line 22) | class Feathers<Services, Settings>
    method constructor (line 34) | constructor() {
    method get (line 42) | get<L extends keyof Settings & string>(name: L): Settings[L] {
    method set (line 46) | set<L extends keyof Settings & string>(name: L, value: Settings[L]) {
    method configure (line 51) | configure(callback: (this: this, app: this) => void) {
    method defaultService (line 57) | defaultService(location: string): ServiceInterface {
    method service (line 61) | service<L extends keyof Services & string>(
    method _setup (line 75) | protected _setup() {
    method setup (line 95) | get setup() {
    method setup (line 99) | set setup(value) {
    method _teardown (line 110) | protected _teardown() {
    method teardown (line 130) | get teardown() {
    method teardown (line 134) | set teardown(value) {
    method use (line 145) | use<L extends keyof Services & string>(
    method unuse (line 191) | async unuse<L extends keyof Services & string>(
    method hooks (line 206) | hooks(hookMap: ApplicationHookOptions<this>) {

FILE: packages/feathers/src/declarations.ts
  type SelfOrArray (line 4) | type SelfOrArray<S> = S | S[]
  type OptionalPick (line 5) | type OptionalPick<T, K extends PropertyKey> = Pick<T, Extract<keyof T, K>>
  type Entries (line 6) | type Entries<T> = {
  type GetKeyByValue (line 9) | type GetKeyByValue<Obj, Value> = Extract<Entries<Obj>[number], [Property...
  type Paginated (line 16) | interface Paginated<T> {
  type ServiceOptions (line 26) | interface ServiceOptions<MethodTypes = string> {
  type ClientService (line 46) | interface ClientService<
  type ServiceMethods (line 73) | interface ServiceMethods<
  type ServiceOverloads (line 96) | interface ServiceOverloads<
  type Service (line 121) | type Service<
  type ServiceInterface (line 131) | type ServiceInterface<
  type ServiceAddons (line 138) | interface ServiceAddons<A = Application, S = Service> extends EventEmitt...
  type ServiceHookOverloads (line 143) | interface ServiceHookOverloads<S, P = Params> {
  type FeathersService (line 161) | type FeathersService<A = FeathersApplication, S = Service> = S &
  type CustomMethods (line 165) | type CustomMethods<T extends { [key: string]: [any, any] }> = {
  type TransportConnection (line 173) | type TransportConnection<Services = any> = {
  type RealTimeConnection (line 184) | interface RealTimeConnection {
  type CustomMethod (line 191) | type CustomMethod<T = any, R = T, P extends Params = Params> = (data: T,...
  type ServiceMixin (line 193) | type ServiceMixin<A> = (service: FeathersService<A>, path: string, optio...
  type ServiceGenericType (line 195) | type ServiceGenericType<S> = S extends ServiceInterface<infer T> ? T : any
  type ServiceGenericData (line 196) | type ServiceGenericData<S> = S extends ServiceInterface<infer _T, infer ...
  type ServiceGenericParams (line 197) | type ServiceGenericParams<S> = S extends ServiceInterface<infer _T, infe...
  type FeathersApplication (line 199) | interface FeathersApplication<Services = any, Settings = any> {
  type Application (line 320) | interface Application<Services = any, Settings = any>
  type Id (line 323) | type Id = number | string
  type NullableId (line 324) | type NullableId = Id | null
  type Query (line 326) | interface Query {
  type Params (line 330) | interface Params<Q = Query> {
  type PaginationOptions (line 337) | interface PaginationOptions {
  type PaginationParams (line 342) | type PaginationParams = false | PaginationOptions
  type Http (line 344) | interface Http {
  type HookType (line 359) | type HookType = 'before' | 'after' | 'error' | 'around'
  type Serv (line 361) | type Serv<FA> = FA extends Application<infer S> ? S : never
  type HookContext (line 363) | interface HookContext<A = Application, S = any> extends BaseHookContext<...
  type HookFunction (line 447) | type HookFunction<A = Application, S = Service> = (
  type Hook (line 452) | type Hook<A = Application, S = Service> = HookFunction<A, S>
  type HookMethodMap (line 454) | type HookMethodMap<A, S> = {
  type HookTypeMap (line 458) | type HookTypeMap<A, S> = SelfOrArray<HookFunction<A, S>> | HookMethodMap...
  type AroundHookFunction (line 461) | type AroundHookFunction<A = Application, S = Service> = (
  type AroundHookMap (line 466) | type AroundHookMap<A, S> = {
  type HookMap (line 470) | type HookMap<A, S> = {
  type HookOptions (line 477) | type HookOptions<A, S> = AroundHookMap<A, S> | AroundHookFunction<A, S>[...
  type ApplicationHookContext (line 479) | interface ApplicationHookContext<A = Application> extends BaseHookContext {
  type ApplicationHookFunction (line 484) | type ApplicationHookFunction<A> = (
  type ApplicationHookMap (line 489) | type ApplicationHookMap<A> = {
  type ApplicationHookOptions (line 494) | type ApplicationHookOptions<A> = HookOptions<A, any> | ApplicationHookMa...

FILE: packages/feathers/src/events.ts
  function eventHook (line 6) | function eventHook(context: HookContext, next: NextFunction) {
  function eventMixin (line 23) | function eventMixin<A>(service: FeathersService<A>) {

FILE: packages/feathers/src/hooks.ts
  type ConvertedMap (line 22) | type ConvertedMap = { [type in HookType]: ReturnType<typeof convertHookD...
  type HookStore (line 24) | type HookStore = {
  type HookEnabled (line 33) | type HookEnabled = { __hooks: HookStore }
  function convertHookData (line 41) | function convertHookData(input: any) {
  function collectHooks (line 58) | function collectHooks(target: HookEnabled, method: string) {
  function enableHooks (line 71) | function enableHooks(object: any) {
  function createContext (line 140) | function createContext(service: Service, method: string, data: HookConte...
  class FeathersHookManager (line 150) | class FeathersHookManager<A> extends HookManager {
    method constructor (line 151) | constructor(
    method collectMiddleware (line 159) | collectMiddleware(self: any, args: any[]): Middleware[] {
    method initializeContext (line 167) | initializeContext(self: any, args: any[], context: HookContext) {
    method middleware (line 175) | middleware(mw: Middleware[]) {
  function hookMixin (line 181) | function hookMixin<A>(this: A, service: FeathersService<A>, path: string...

FILE: packages/feathers/src/index.ts
  function feathers (line 7) | function feathers<T = any, S = any>() {

FILE: packages/feathers/src/service.ts
  constant SERVICE (line 5) | const SERVICE = createSymbol('@feathersjs/service')
  function getHookMethods (line 30) | function getHookMethods(service: any, options: ServiceOptions) {
  function getServiceOptions (line 38) | function getServiceOptions(service: any): ServiceOptions {
  function wrapService (line 57) | function wrapService(location: string, service: any, options: ServiceOpt...

FILE: packages/feathers/test/application.test.ts
  method get (line 41) | async get(id: string) {
  method setup (line 91) | async setup(this: any, _app: any, path: string) {
  method teardown (line 95) | async teardown(this: any, _app: any, path: string) {
  method create (line 99) | async create(data: any) {
  method create (line 129) | async create(data: any) {
  method removeListener (line 132) | async removeListener(data: any) {
  method setup (line 135) | async setup() {}
  method teardown (line 137) | async teardown() {}
  method create (line 171) | async create(data: any) {
  method get (line 183) | async get(id: string) {
  method create (line 195) | async create(data: any) {
  method create (line 203) | async create(data: any) {
  method create (line 235) | async create(data: any) {
  method create (line 247) | create(ctx) {
  method setup (line 275) | async setup(this: any, _app: any, path: string) {
  method create (line 279) | async create(data: any) {
  method setup (line 293) | async setup(this: any, _app: any, path: string) {
  method create (line 297) | async create(data: any) {
  method setup (line 365) | async setup(appRef: any, path: any) {
  method teardown (line 371) | async teardown(appRef: any, path: any) {
  method get (line 379) | get(id: string) {
  method setup (line 385) | async setup(appRef: any, path: any) {
  method teardown (line 391) | async teardown(appRef: any, path: any) {
  method setup (line 415) | async setup(appRef: any, path: any) {
  method setup (line 431) | async setup() {}
  method teardown (line 432) | async teardown(appRef: any, path: any) {
  method get (line 440) | get(id: string) {
  method setup (line 446) | async setup() {}
  method teardown (line 447) | async teardown(appRef: any, path: any) {
  class Dummy (line 463) | class Dummy {
    method get (line 465) | async get(id: Id) {
  method get (line 516) | async get(id: string) {
  method get (line 524) | async get(id: string) {
  method create (line 531) | async create(data: any) {

FILE: packages/feathers/test/declarations.test.ts
  type Todo (line 5) | interface Todo {
  type TodoData (line 11) | interface TodoData {
  class TodoService (line 16) | class TodoService implements ServiceInterface<Todo, TodoData> {
    method constructor (line 17) | constructor(public todos: Todo[] = []) {}
    method find (line 19) | async find() {
    method create (line 23) | async create(data: TodoData) {
    method setup (line 36) | async setup(app: Application) {
  type Configuration (line 41) | interface Configuration {
  type Services (line 45) | interface Services {
  type MainApp (line 50) | type MainApp = Application<Services, Configuration>

FILE: packages/feathers/test/events.test.ts
  method create (line 44) | async create(data: any) {
  method create (line 61) | async create(data: any) {
  method create (line 70) | create(context: any) {
  method update (line 87) | async update(id: any, data: any) {
  method patch (line 104) | async patch(id: any, data: any) {
  method remove (line 121) | async remove(id: any) {
  method create (line 140) | async create(data: any) {
  method update (line 171) | async update(id: any, data: any) {
  method patch (line 204) | async patch(id: any, data: any) {
  method remove (line 239) | async remove(id: any, data: any) {
  method create (line 273) | async create(data: any) {
  method after (line 281) | after(hook: any) {
  class Creator (line 303) | class Creator {
    method create (line 305) | async create(data: any) {

FILE: packages/feathers/test/hooks/after.test.ts
  method get (line 7) | async get(id: Id) {
  method find (line 14) | async find() {
  method get (line 22) | async get(hook) {
  method find (line 27) | async find() {
  method get (line 48) | async get(id: Id) {
  method find (line 55) | async find() {
  method get (line 63) | get(context) {
  method find (line 67) | find() {
  method create (line 88) | async create(data: any) {
  method create (line 98) | create(context) {
  method create (line 115) | async create(data: any) {
  method create (line 125) | create(context) {
  method update (line 141) | async update(_id: any, data: any) {
  method update (line 151) | update() {
  method remove (line 164) | async remove() {
  method remove (line 174) | remove() {
  method create (line 187) | async create(data: any) {
  method create (line 197) | create(context) {
  method create (line 207) | create(context) {
  method create (line 228) | async create(data: any) {
  method get (line 268) | async get(id: any) {
  method get (line 276) | get(context) {
  method get (line 308) | async get(id: any) {
  method find (line 314) | async find() {
  method all (line 323) | all(context) {
  class Dummy (line 353) | class Dummy {
    method get (line 355) | async get(id: any) {
  method get (line 368) | get(this: any, hook) {
  method get (line 387) | async get(id: any) {
  method all (line 395) | all(context) {

FILE: packages/feathers/test/hooks/app.test.ts
  type Todo (line 5) | type Todo = {
  type TodoParams (line 13) | interface TodoParams extends Params {
  type TodoService (line 18) | type TodoService = ServiceInterface<Todo, Todo, TodoParams> & {
  type App (line 22) | type App = Application<{ todos: TodoService }>
  method get (line 31) | async get(id: any, params: any) {
  method create (line 39) | async create(data: any, params: any) {
  method customMethod (line 43) | async customMethod(data: any, params: TodoParams) {
  method before (line 170) | before(context) {
  method before (line 202) | before(context) {
  method before (line 209) | before(context) {
  method before (line 216) | before(context) {
  method after (line 237) | after(context) {
  method after (line 254) | after(context) {
  method after (line 261) | after(context) {
  method after (line 269) | after(context) {
  method error (line 288) | error(context) {
  method error (line 301) | error(context) {
  method error (line 308) | error(context) {
  method error (line 315) | error(context) {

FILE: packages/feathers/test/hooks/around.test.ts
  method get (line 7) | async get() {
  method get (line 36) | async get() {
  method create (line 90) | async create(data: any, params?: any) {
  method create (line 144) | async create(data: any) {
  method update (line 178) | update() {
  method remove (line 200) | async remove() {
  type DummyParams (line 223) | interface DummyParams extends Params {
  class DummyService (line 227) | class DummyService implements ServiceInterface<any, any, DummyParams> {
    method create (line 228) | create(data: any, params?: any) {
    method get (line 277) | async get(id: any, params?: DummyParams) {
  type DummyParams (line 272) | interface DummyParams extends Params<{ name: string }> {
  class DummyService (line 276) | class DummyService implements ServiceInterface<any, any, DummyParams> {
    method create (line 228) | create(data: any, params?: any) {
    method get (line 277) | async get(id: any, params?: DummyParams) {
  type DummyParams (line 316) | interface DummyParams extends Params {
  type DummyService (line 321) | type DummyService = ServiceInterface<any, any, DummyParams>
    method create (line 228) | create(data: any, params?: any) {
    method get (line 277) | async get(id: any, params?: DummyParams) {
  method get (line 324) | async get(id: any, params: any) {
  method find (line 334) | async find(params: any) {
  type DummyParams (line 362) | interface DummyParams extends Params {
  class Dummy (line 366) | class Dummy implements ServiceInterface<any, any, DummyParams> {
    method get (line 369) | async get(id: any, params?: DummyParams) {

FILE: packages/feathers/test/hooks/before.test.ts
  type DummyParams (line 6) | interface DummyParams extends Params {
  type DummyService (line 10) | type DummyService = ServiceInterface<any, any, DummyParams>
  method get (line 13) | async get(id: any, params: DummyParams) {
  method remove (line 22) | async remove() {
  method get (line 30) | get(context) {
  method remove (line 37) | remove() {
  type DummyParams (line 54) | interface DummyParams extends Params {
  type DummyService (line 58) | type DummyService = ServiceInterface<any, any, DummyParams>
  method get (line 61) | async get(id: any, params: any) {
  method remove (line 70) | async remove() {
  method get (line 78) | get(context) {
  method remove (line 82) | remove() {
  method get (line 96) | async get() {
  method get (line 104) | get(context) {
  method create (line 123) | async create(data: any, params?: any) {
  method create (line 149) | create(context) {
  method create (line 177) | async create(data: any) {
  method create (line 189) | create(context) {
  method update (line 212) | update() {
  method update (line 222) | update() {
  type DummyParams (line 234) | interface DummyParams extends Params {
  type DummyService (line 238) | type DummyService = ServiceInterface<any, any, DummyParams>
  method remove (line 241) | async remove(id: any, params: any) {
  method remove (line 253) | remove(context) {
  type DummyParams (line 263) | interface DummyParams extends Params {
  type DummyService (line 267) | type DummyService = ServiceInterface<any, any, DummyParams>
  method create (line 270) | async create(data: any, params: any) {
  method create (line 296) | create(context) {
  method create (line 306) | create(context) {
  type DummyParams (line 318) | interface DummyParams extends Params {
  type DummyService (line 322) | type DummyService = ServiceInterface<any, any, DummyParams>
  method create (line 325) | async create(data: any, params: any) {
  type DummyParams (line 371) | interface DummyParams extends Params {
  type DummyService (line 375) | type DummyService = ServiceInterface<any, any, DummyParams>
  method get (line 378) | async get(id: any, params: any) {
  method get (line 391) | get(context) {
  type DummyParams (line 420) | interface DummyParams extends Params {
  type DummyService (line 425) | type DummyService = ServiceInterface<any, any, DummyParams>
  method get (line 428) | async get(id: any, params: any) {
  method find (line 438) | async find(params: any) {
  method all (line 450) | all(context) {
  type DummyParams (line 472) | interface DummyParams extends Params {
  class Dummy (line 476) | class Dummy implements ServiceInterface<any, any, DummyParams> {
    method get (line 479) | async get(id: any, params?: DummyParams) {
  method get (line 493) | get(this: any, context) {

FILE: packages/feathers/test/hooks/error.test.ts
  method get (line 8) | async get() {
  method get (line 24) | get(context) {
  method get (line 42) | get(context) {
  method get (line 56) | get() {
  method get (line 70) | async get() {
  method get (line 120) | get(context) {
  method get (line 133) | async get() {
  method get (line 140) | get(context: any) {
  method get (line 153) | async get() {
  method before (line 160) | before(context) {
  method error (line 163) | error(context) {
  method get (line 182) | async get(id: any) {
  method before (line 196) | before() {
  method error (line 201) | error(context) {
  method after (line 215) | after() {
  method error (line 219) | error(context) {
  method after (line 237) | after(context) {
  method error (line 243) | error(context) {
  method find (line 262) | async find() {
  method before (line 268) | before(context: any) {
  method find (line 275) | async find() {
  method before (line 283) | before(context: any) {
  method error (line 287) | error(context: any) {

FILE: packages/feathers/test/hooks/hooks.test.ts
  type SimpleParams (line 7) | interface SimpleParams extends Params {
  class SimpleService (line 10) | class SimpleService {
    method get (line 11) | async get(id: Id, params: SimpleParams) {
  type DummyParams (line 139) | interface DummyParams extends Params {
  method get (line 144) | async get(id: any, params: any) {
  method get (line 152) | get(context) {
  method get (line 157) | get(context) {
  method get (line 170) | async get(id: any) {
  method before (line 177) | before(context) {
  method get (line 190) | async get(id: any) {
  method get (line 214) | async get(id: any, params: any) {
  method get (line 225) | async get(id: any, params: any) {
  method get (line 244) | get() {
  method get (line 304) | async get() {
  method error (line 310) | error(context: any) {
  class Dummy (line 325) | class Dummy {
    method get (line 326) | async get(id: Id) {
    method create (line 330) | async create(data: any) {
    method custom (line 334) | async custom(data: any) {
  method get (line 368) | async get(id: Id, params: Params) {
  method get (line 383) | async get() {

FILE: packages/generators/src/app/index.ts
  type AppGeneratorData (line 17) | interface AppGeneratorData extends FeathersAppInfo {
  type AppGeneratorContext (line 40) | type AppGeneratorContext = FeathersBaseContext &
  type AppGeneratorArguments (line 46) | type AppGeneratorArguments = FeathersBaseContext & Partial<AppGeneratorD...

FILE: packages/generators/src/authentication/index.ts
  type AuthenticationGeneratorContext (line 17) | interface AuthenticationGeneratorContext extends ServiceGeneratorContext {
  type AuthenticationGeneratorArguments (line 24) | type AuthenticationGeneratorArguments = FeathersBaseContext &

FILE: packages/generators/src/commons.ts
  type DependencyVersions (line 26) | type DependencyVersions = { [key: string]: string }
  constant DATABASE_TYPES (line 28) | const DATABASE_TYPES = ['mongodb', 'mysql', 'postgresql', 'sqlite', 'mss...
  type DatabaseType (line 33) | type DatabaseType = (typeof DATABASE_TYPES)[number]
  type FeathersAppInfo (line 43) | type FeathersAppInfo = {
  type AppPackageJson (line 70) | interface AppPackageJson extends PackageJson {
  type FeathersBaseContext (line 74) | interface FeathersBaseContext extends PinionContext {
  class FeathersGeneratorError (line 149) | class FeathersGeneratorError extends Error {
    method constructor (line 161) | constructor(message: string, context?: Record<string, unknown>) {
  constant PRETTIERRC (line 227) | const PRETTIERRC: PrettierOptions = {

FILE: packages/generators/src/connection/index.ts
  type ConnectionGeneratorContext (line 18) | interface ConnectionGeneratorContext extends FeathersBaseContext {
  type ConnectionGeneratorArguments (line 25) | type ConnectionGeneratorArguments = FeathersBaseContext &
  constant DATABASE_CLIENTS (line 71) | const DATABASE_CLIENTS = {

FILE: packages/generators/src/hook/index.ts
  type HookGeneratorContext (line 10) | interface HookGeneratorContext extends FeathersBaseContext {

FILE: packages/generators/src/service/index.ts
  type ServiceGeneratorContext (line 19) | interface ServiceGeneratorContext extends FeathersBaseContext {
  type ServiceGeneratorArguments (line 85) | type ServiceGeneratorArguments = FeathersBaseContext &

FILE: packages/generators/test/utils.ts
  function combinate (line 9) | function combinate<O extends Record<string | number, any[]>>(obj: O) {

FILE: packages/knex/src/adapter.ts
  constant METHODS (line 9) | const METHODS = {
  constant OPERATORS (line 17) | const OPERATORS = {
  constant RETURNING_CLIENTS (line 27) | const RETURNING_CLIENTS = ['postgresql', 'pg', 'oracledb', 'mssql', 'sql...
  class KnexAdapter (line 29) | class KnexAdapter<
    method constructor (line 37) | constructor(options: KnexAdapterOptions) {
    method fullName (line 63) | get fullName() {
    method Model (line 68) | get Model() {
    method getModel (line 72) | getModel(params: ServiceParams = {} as ServiceParams) {
    method db (line 77) | db(params?: ServiceParams) {
    method knexify (line 89) | knexify(knexQuery: Knex.QueryBuilder, query: Query = {}, parentKey?: s...
    method createQuery (line 132) | createQuery(params: ServiceParams = {} as ServiceParams) {
    method filterQuery (line 163) | filterQuery(params: ServiceParams) {
    method _find (line 178) | async _find(params: ServiceParams = {} as ServiceParams): Promise<Pagi...
    method _findOrGet (line 215) | async _findOrGet(id: NullableId, params?: ServiceParams) {
    method _get (line 230) | async _get(id: Id, params: ServiceParams = {} as ServiceParams): Promi...
    method _create (line 243) | async _create(
    method _patch (line 277) | async _patch(
    method _update (line 320) | async _update(id: Id, _data: Data, params: ServiceParams = {} as Servi...
    method _remove (line 347) | async _remove(id: NullableId, params: ServiceParams = {} as ServicePar...

FILE: packages/knex/src/declarations.ts
  type KnexAdapterOptions (line 4) | interface KnexAdapterOptions extends AdapterServiceOptions {
  type KnexAdapterTransaction (line 16) | interface KnexAdapterTransaction {
  type KnexAdapterParams (line 26) | interface KnexAdapterParams<Q = AdapterQuery> extends AdapterParams<Q, P...

FILE: packages/knex/src/error-handler.ts
  constant ERROR (line 3) | const ERROR = Symbol.for('@feathersjs/knex/error')
  function errorHandler (line 5) | function errorHandler(error: any) {

FILE: packages/knex/src/hooks.ts
  constant ROLLBACK (line 8) | const ROLLBACK = { rollback: true }

FILE: packages/knex/src/index.ts
  class KnexService (line 12) | class KnexService<
    method find (line 24) | async find(params?: ServiceParams): Promise<Paginated<Result> | Result...
    method get (line 31) | async get(id: Id, params?: ServiceParams): Promise<Result> {
    method create (line 41) | async create(data: Data | Data[], params?: ServiceParams): Promise<Res...
    method update (line 49) | async update(id: Id, data: Data, params?: ServiceParams): Promise<Resu...
    method patch (line 59) | async patch(id: NullableId, data: PatchData, params?: ServiceParams): ...
    method remove (line 71) | async remove(id: NullableId, params?: ServiceParams): Promise<Result |...

FILE: packages/knex/test/index.test.ts
  constant TYPE (line 88) | const TYPE = process.env.TEST_DB || 'sqlite'
  type Person (line 172) | type Person = {
  type Todo (line 180) | type Todo = {
  type ServiceTypes (line 187) | type ServiceTypes = {
  class TodoService (line 195) | class TodoService extends KnexService<Todo> {
    method createQuery (line 196) | createQuery(params: KnexAdapterParams<AdapterQuery>) {
  type ModelStub (line 470) | type ModelStub = { getModel: () => Knex }

FILE: packages/knex/test/overrides.test.ts
  type Animal (line 25) | type Animal = {
  class AnimalService (line 36) | class AnimalService<T = Animal, P extends KnexAdapterParams = KnexAdapte...
    method _find (line 40) | async _find(params: P = {} as P): Promise<Paginated<T> | T[]> {
  function clean (line 56) | function clean() {

FILE: packages/koa/src/authentication.ts
  type AuthenticationSettings (line 9) | type AuthenticationSettings = {
  function parseAuthentication (line 14) | function parseAuthentication(settings: AuthenticationSettings = {}): Mid...
  function authenticate (line 42) | function authenticate(settings: string | AuthenticationSettings, ...stra...

FILE: packages/koa/src/declarations.ts
  type ApplicationAddons (line 6) | type ApplicationAddons = {
  type Application (line 11) | type Application<T = any, C = any> = Omit<Koa, 'listen'> &
  type FeathersKoaContext (line 15) | type FeathersKoaContext<A = Application> = Koa.Context & {
  type Middleware (line 19) | type Middleware<A = Application> = (context: FeathersKoaContext<A>, next...
  type ServiceOptions (line 22) | interface ServiceOptions {
  type ExtendableContext (line 32) | interface ExtendableContext {

FILE: packages/koa/src/index.ts
  function koa (line 20) | function koa<S = any, C = any>(

FILE: packages/koa/src/rest.ts
  type RestOptions (line 69) | type RestOptions = {

FILE: packages/koa/test/app.fixture.ts
  method get (line 61) | async get(id: string, params: Params) {

FILE: packages/koa/test/index.test.ts
  method get (line 81) | async get(id: Id) {

FILE: packages/memory/src/index.ts
  type MemoryServiceStore (line 13) | interface MemoryServiceStore<T> {
  type MemoryServiceOptions (line 17) | interface MemoryServiceOptions<T = any> extends AdapterServiceOptions {
  class MemoryAdapter (line 30) | class MemoryAdapter<
    method constructor (line 39) | constructor(options: MemoryServiceOptions<Result> = {}) {
    method getEntries (line 52) | async getEntries(_params?: ServiceParams) {
    method getQuery (line 61) | getQuery(params: ServiceParams) {
    method _find (line 73) | async _find(params: ServiceParams = {} as ServiceParams): Promise<Pagi...
    method _get (line 147) | async _get(id: Id, params: ServiceParams = {} as ServiceParams): Promi...
    method _create (line 164) | async _create(
    method _update (line 179) | async _update(id: Id, data: Data, params: ServiceParams = {} as Servic...
    method _patch (line 198) | async _patch(
    method _remove (line 235) | async _remove(id: NullableId, params: ServiceParams = {} as ServicePar...
  class MemoryService (line 259) | class MemoryService<
    method find (line 268) | async find(params?: ServiceParams): Promise<Paginated<Result> | Result...
    method get (line 275) | async get(id: Id, params?: ServiceParams): Promise<Result> {
    method create (line 284) | async create(data: Data | Data[], params?: ServiceParams): Promise<Res...
    method update (line 292) | async update(id: Id, data: Data, params?: ServiceParams): Promise<Resu...
    method patch (line 301) | async patch(id: NullableId, data: PatchData, params?: ServiceParams): ...
    method remove (line 312) | async remove(id: NullableId, params?: ServiceParams): Promise<Result |...
  function memory (line 322) | function memory<T = any, D = Partial<T>, P extends Params = Params>(

FILE: packages/memory/test/index.test.ts
  type Person (line 82) | type Person = {
  type Animal (line 88) | type Animal = {
  method matcher (line 171) | matcher() {
  method sorter (line 178) | sorter() {

FILE: packages/mongodb/src/adapter.ts
  type MongoDBAdapterOptions (line 28) | interface MongoDBAdapterOptions extends AdapterServiceOptions {
  type MongoDBAdapterParams (line 40) | interface MongoDBAdapterParams<Q = AdapterQuery> extends AdapterParams<
  type AdapterId (line 56) | type AdapterId = Id | ObjectId
  type NullableAdapterId (line 58) | type NullableAdapterId = AdapterId | null
  class MongoDbAdapter (line 61) | class MongoDbAdapter<
    method constructor (line 67) | constructor(options: MongoDBAdapterOptions) {
    method getObjectId (line 78) | getObjectId(id: AdapterId) {
    method filterQuery (line 90) | filterQuery(id: NullableAdapterId, params: ServiceParams) {
    method getModel (line 113) | getModel(params: ServiceParams = {} as ServiceParams) {
    method findRaw (line 118) | async findRaw(params: ServiceParams) {
    method aggregateRaw (line 143) | async aggregateRaw(params: ServiceParams) {
    method makeFeathersPipeline (line 154) | makeFeathersPipeline(params: ServiceParams) {
    method getProjection (line 177) | getProjection(select?: string[] | { [key: string]: number }) {
    method normalizeId (line 205) | normalizeId<D>(id: NullableAdapterId, data: D): D {
    method countDocuments (line 221) | async countDocuments(params: ServiceParams) {
    method _get (line 254) | async _get(id: AdapterId, params: ServiceParams = {} as ServiceParams)...
    method _find (line 304) | async _find(params: ServiceParams = {} as ServiceParams): Promise<Pagi...
    method _create (line 344) | async _create(
    method _patch (line 398) | async _patch(
    method _update (line 499) | async _update(id: AdapterId, data: Data, params: ServiceParams = {} as...
    method _remove (line 551) | async _remove(

FILE: packages/mongodb/src/converters.ts
  type ObjectIdParam (line 3) | type ObjectIdParam = string | number | ObjectId
  type IdQueryObject (line 5) | type IdQueryObject<T> = {
  function resolveObjectId (line 13) | async function resolveObjectId(value: ObjectIdParam) {
  function resolveQueryObjectId (line 21) | async function resolveQueryObjectId(value: ObjectIdParam | IdQueryObject...
  method compile (line 51) | compile(schemaVal: boolean) {

FILE: packages/mongodb/src/error-handler.ts
  function errorHandler (line 4) | function errorHandler(error: MongoError): any {

FILE: packages/mongodb/src/index.ts
  class MongoDBService (line 10) | class MongoDBService<
    method find (line 19) | async find(params?: ServiceParams): Promise<Paginated<Result> | Result...
    method get (line 26) | async get(id: AdapterId, params?: ServiceParams): Promise<Result> {
    method create (line 36) | async create(data: Data | Data[], params?: ServiceParams): Promise<Res...
    method update (line 45) | async update(id: AdapterId, data: Data, params?: ServiceParams): Promi...
    method patch (line 55) | async patch(id: NullableAdapterId, data: PatchData, params?: ServicePa...
    method remove (line 67) | async remove(id: NullableAdapterId, params?: ServiceParams): Promise<R...

FILE: packages/mongodb/test/index.test.ts
  type Person (line 124) | type Person = Omit<FromSchema<typeof personSchema>, '_id'> & { _id: Adap...
  type Todo (line 125) | type Todo = {
  type ServiceTypes (line 132) | type ServiceTypes = {
  function indexOfName (line 226) | function indexOfName(results: Person[], name: string) {

FILE: packages/rest-client/src/axios.ts
  class AxiosClient (line 4) | class AxiosClient<T = any, D = Partial<T>, P extends Params = RestClient...
    method request (line 5) | request(options: any, params: RestClientParams) {

FILE: packages/rest-client/src/base.ts
  function toError (line 6) | function toError(error: Error & { code: string }) {
  type RestClientParams (line 14) | interface RestClientParams extends Params {
  type RestClientSettings (line 18) | interface RestClientSettings {
  method constructor (line 35) | constructor(settings: RestClientSettings) {
  method makeUrl (line 42) | makeUrl(query: Query, id?: string | number | null, route?: { [key: strin...
  method getQuery (line 60) | getQuery(query: Query) {
  method methods (line 72) | methods(this: any, ...names: string[]) {
  method _find (line 100) | _find(params?: P) {
  method find (line 111) | find(params?: P) {
  method _get (line 115) | _get(id: Id, params?: P) {
  method get (line 130) | get(id: Id, params?: P) {
  method _create (line 134) | _create(data: D, params?: P) {
  method create (line 146) | create(data: D, params?: P) {
  method _update (line 150) | _update(id: NullableId, data: D, params?: P) {
  method update (line 166) | update(id: NullableId, data: D, params?: P) {
  method _patch (line 170) | _patch(id: NullableId, data: D, params?: P) {
  method patch (line 186) | patch(id: NullableId, data: D, params?: P) {
  method _remove (line 190) | _remove(id: NullableId, params?: P) {
  method remove (line 205) | remove(id: NullableId, params?: P) {

FILE: packages/rest-client/src/fetch.ts
  class FetchClient (line 5) | class FetchClient<T = any, D = Partial<T>, P extends Params = RestClient...
    method request (line 6) | request(options: any, params: RestClientParams) {
    method checkStatus (line 32) | checkStatus(response: any) {

FILE: packages/rest-client/src/index.ts
  type Handler (line 16) | type Handler<ServiceTypes> = (
  type Transport (line 22) | interface Transport<ServiceTypes> {
  type RestService (line 28) | type RestService<T = any, D = Partial<any>> = Base<T, D>
  function restClient (line 30) | function restClient<ServiceTypes = any>(base = '') {

FILE: packages/rest-client/src/superagent.ts
  class SuperagentClient (line 4) | class SuperagentClient<T = any, D = Partial<T>, P extends Params = RestC...
    method request (line 9) | request(options: any, params: RestClientParams) {

FILE: packages/rest-client/test/declarations.ts
  type Data (line 4) | type Data = { message: string }
  type Result (line 5) | type Result = {
  type ServiceTypes (line 11) | type ServiceTypes = {

FILE: packages/rest-client/test/index.test.ts
  class MyFetchClient (line 89) | class MyFetchClient extends FetchClient {
    method find (line 90) | find() {
    method find (line 113) | find() {
    method request (line 137) | request(options: any, _params: any) {
  class MyFetchClient (line 112) | class MyFetchClient extends FetchClient {
    method find (line 90) | find() {
    method find (line 113) | find() {
    method request (line 137) | request(options: any, _params: any) {
  class MyFetchClient (line 136) | class MyFetchClient extends FetchClient {
    method find (line 90) | find() {
    method find (line 113) | find() {
    method request (line 137) | request(options: any, _params: any) {

FILE: packages/rest-client/test/server.ts
  method value (line 8) | value() {
  method 'application/json' (line 27) | 'application/json'() {
  type TodoServiceParams (line 33) | interface TodoServiceParams extends Params {
  class TodoService (line 38) | class TodoService extends MemoryService {
    method get (line 39) | get(id: Id, params: TodoServiceParams) {
    method remove (line 60) | remove(id: NullableId, params: Params) {
    method customMethod (line 75) | async customMethod(data: any, { provider }: Params) {
  method html (line 105) | html() {
  method json (line 109) | json() {

FILE: packages/schema/src/default-schemas.ts
  type AuthenticationConfiguration (line 114) | type AuthenticationConfiguration = FromSchema<typeof authenticationSetti...
  type DefaultAppConfiguration (line 178) | type DefaultAppConfiguration = FromSchema<typeof defaultAppConfiguration>

FILE: packages/schema/src/hooks/resolve.ts
  type ResolverSetting (line 29) | type ResolverSetting<H extends HookContext> = Resolver<any, H> | Resolve...
  constant DISPATCH (line 114) | const DISPATCH = Symbol.for('@feathersjs/schema/dispatch')
  type ResolveAllSettings (line 195) | type ResolveAllSettings<H extends HookContext> = {

FILE: packages/schema/src/index.ts
  type Infer (line 16) | type Infer<S extends { _type: any }> = S['_type']
  type Combine (line 18) | type Combine<S extends { _type: any }, U> = Pick<Infer<S>, Exclude<keyof...
  type Params (line 21) | interface Params {

FILE: packages/schema/src/json-schema.ts
  type DataSchemaMap (line 5) | type DataSchemaMap = {
  type DataValidatorMap (line 11) | type DataValidatorMap = {
  type PropertyQuery (line 66) | type PropertyQuery<D extends JSONSchema, X> = {

FILE: packages/schema/src/resolver.ts
  type PromiseOrLiteral (line 4) | type PromiseOrLiteral<V> = Promise<V> | V
  type PropertyResolver (line 6) | type PropertyResolver<T, V, C> = ((
  type VirtualResolver (line 13) | type VirtualResolver<T, V, C> = (
  constant IS_VIRTUAL (line 19) | const IS_VIRTUAL = Symbol.for('@feathersjs/schema/virtual')
  type PropertyResolverMap (line 37) | type PropertyResolverMap<T, C> = {
  type ResolverConverter (line 41) | type ResolverConverter<T, C> = (
  type ResolverOptions (line 47) | interface ResolverOptions<T, C> {
  type ResolverConfig (line 56) | interface ResolverConfig<T, C> extends ResolverOptions<T, C> {
  type ResolverStatus (line 67) | interface ResolverStatus<T, C> {
  class Resolver (line 74) | class Resolver<T, C> {
    method constructor (line 79) | constructor(public readonly options: ResolverConfig<T, C>) {
    method resolveProperty (line 93) | async resolveProperty<D, K extends keyof T>(
    method convert (line 117) | async convert<D>(data: D, context: C, status?: Partial<ResolverStatus<...
    method resolve (line 127) | async resolve<D>(_data: D, context: C, status?: Partial<ResolverStatus...
  function resolve (line 194) | function resolve<T, C>(

FILE: packages/schema/src/schema.ts
  constant DEFAULT_AJV (line 5) | const DEFAULT_AJV = new Ajv({
  type Validator (line 16) | type Validator<T = any, R = T> = (data: T) => Promise<R>
  type JSONSchemaDefinition (line 18) | type JSONSchemaDefinition = JSONSchema & {
  type Schema (line 25) | interface Schema<T> {
  class SchemaWrapper (line 29) | class SchemaWrapper<S extends JSONSchemaDefinition> implements Schema<Fr...
    method constructor (line 34) | constructor(
    method properties (line 45) | get properties() {
    method required (line 49) | get required() {
    method validate (line 53) | async validate<T = FromSchema<S>>(...args: Parameters<ValidateFunction...
    method toJSON (line 63) | toJSON() {
  function schema (line 68) | function schema<S extends JSONSchemaDefinition>(definition: S, ajv: Ajv ...

FILE: packages/schema/test/fixture.ts
  type UserData (line 44) | type UserData = FromSchema<typeof userDataSchema>
  type User (line 66) | type User = FromSchema<typeof userSchema>
  type MessageData (line 94) | type MessageData = FromSchema<typeof messageDataSchema>
  type Message (line 110) | type Message = FromSchema<
  type MessageQuery (line 177) | type MessageQuery = FromSchema<typeof messageQuerySchema>
  type ServiceParams (line 191) | interface ServiceParams extends AdapterParams {
  class MessageService (line 196) | class MessageService extends MemoryService<Message, MessageData, Service...
    method customMethod (line 197) | async customMethod(data: any) {
  class CustomService (line 203) | class CustomService {
    method find (line 204) | async find() {
  type ServiceTypes (line 216) | type ServiceTypes = {
  type Application (line 222) | type Application = FeathersApplication<ServiceTypes>

FILE: packages/schema/test/json-schema.test.ts
  type Query (line 43) | type Query = FromSchema<typeof querySchema>
  type Query (line 73) | type Query = FromSchema<typeof querySchema>

FILE: packages/schema/test/resolver.test.ts
  type User (line 22) | type User = FromSchema<typeof userSchema> & {

FILE: packages/schema/test/schema.test.ts
  method compile (line 16) | compile(schemaVal: boolean, parentSchema: AnySchemaObject) {
  type Message (line 47) | type Message = Infer<typeof messageSchema>
  type MessageResult (line 172) | type MessageResult = Infer<typeof messageResultSchema>
  type User (line 219) | type User = Infer<typeof userSchema>
  type Message (line 220) | type Message = Infer<typeof messageSchema> & {

FILE: packages/socketio-client/src/index.ts
  type FeathersApplication (line 14) | interface FeathersApplication<Services, Settings> {
  function socketioClient (line 23) | function socketioClient<Services = any>(connection: Socket, options?: an...

FILE: packages/socketio-client/test/index.test.ts
  type ServiceTypes (line 11) | type ServiceTypes = {

FILE: packages/socketio-client/test/server.ts
  method value (line 8) | value() {
  class TodoService (line 22) | class TodoService extends MemoryService {
    method get (line 23) | async get(id: Id, params: Params) {
    method customMethod (line 33) | async customMethod(data: any, { provider }: Params) {
  function createServer (line 42) | function createServer() {

FILE: packages/socketio/src/index.ts
  type Application (line 13) | interface Application<Services, Settings> {
  function configureSocketio (line 29) | function configureSocketio(port?: any, options?: any, config?: any) {

FILE: packages/socketio/src/middleware.ts
  type ParamsGetter (line 7) | type ParamsGetter = (socket: Socket) => any
  type NextFunction (line 8) | type NextFunction = (err?: any) => void
  type FeathersSocket (line 9) | interface FeathersSocket extends Socket {

FILE: packages/socketio/test/index.test.ts
  class VerifierService (line 25) | class VerifierService {
    method find (line 26) | async find(params: Params) {
    method create (line 30) | async create(data: any, params: Params) {
    method update (line 34) | async update(id: NullableId, data: any, params: Params) {
  method app (line 49) | get app() {
  method socket (line 53) | get socket() {

FILE: packages/tests/src/client.ts
  type Todo (line 3) | interface Todo {
  function clientTests (line 9) | function clientTests(app: any, name: string) {

FILE: packages/tests/src/fixture.ts
  class Service (line 16) | class Service {
    method find (line 19) | async find() {
    method get (line 23) | async get(name: string, params: any) {
    method create (line 40) | async create(data: any) {
    method update (line 53) | async update(id: any, data: any) {
    method patch (line 66) | async patch(id: any, data: any) {
    method remove (line 79) | async remove(id: any) {
    method customMethod (line 83) | async customMethod(data: any, params: any) {
    method internalMethod (line 91) | async internalMethod() {
  method find (line 97) | find(data: any) {
  method get (line 101) | get(id: any, data: any) {
  method create (line 106) | create(original: any, current: any) {
  method update (line 114) | update(id: any, original: any, current: any) {
  method patch (line 122) | patch(id: any, original: any, current: any) {
  method remove (line 130) | remove(id: any, data: any) {

FILE: packages/tests/src/rest.ts
  function restTests (line 6) | function restTests(description: string, name: string, port: number) {

FILE: packages/transport-commons/src/channels/channel/base.ts
  class Channel (line 4) | class Channel extends EventEmitter {
    method constructor (line 8) | constructor(connections: RealTimeConnection[] = [], data: any = null) {
    method length (line 15) | get length() {
    method leave (line 19) | leave(...connections: RealTimeConnection[]) {
    method join (line 41) | join(...connections: RealTimeConnection[]) {
    method filter (line 51) | filter(fn: (connection: RealTimeConnection) => boolean) {
    method send (line 55) | send(data: any) {

FILE: packages/transport-commons/src/channels/channel/combined.ts
  function collectConnections (line 4) | function collectConnections(children: Channel[]) {
  class CombinedChannel (line 20) | class CombinedChannel extends Channel {
    method constructor (line 24) | constructor(children: Channel[], data: any = null) {
    method refresh (line 33) | refresh() {
    method leave (line 39) | leave(...connections: RealTimeConnection[]) {
    method join (line 43) | join(...connections: RealTimeConnection[]) {
    method dataFor (line 47) | dataFor(connection: RealTimeConnection) {
    method callChildren (line 51) | private callChildren(method: string, connections: RealTimeConnection[]) {

FILE: packages/transport-commons/src/channels/index.ts
  type ServiceAddons (line 13) | interface ServiceAddons<A, S> extends EventEmitter {
  type Application (line 23) | interface Application<Services, Settings> {
  type Params (line 37) | interface Params {
  function channels (line 44) | function channels() {

FILE: packages/transport-commons/src/channels/mixins.ts
  constant PUBLISHERS (line 8) | const PUBLISHERS = Symbol.for('@feathersjs/transport-commons/publishers')
  constant CHANNELS (line 9) | const CHANNELS = Symbol.for('@feathersjs/transport-commons/channels')
  constant ALL_EVENTS (line 10) | const ALL_EVENTS = Symbol.for('@feathersjs/transport-commons/all-events')
  type ChannelMixin (line 18) | interface ChannelMixin {
  function channelMixin (line 23) | function channelMixin() {
  type Event (line 64) | type Event = string | typeof ALL_EVENTS
  type Publisher (line 66) | type Publisher<T = any, A = Application, S = any> = (
  type PublishMixin (line 71) | interface PublishMixin<T = any> {
  function publishMixin (line 77) | function publishMixin() {

FILE: packages/transport-commons/src/client.ts
  type ServiceOptions (line 53) | interface ServiceOptions {
  type SocketService (line 60) | type SocketService<T = any, D = Partial<any>, P extends Params = Params>...
  class Service (line 62) | class Service<T = any, D = Partial<T>, P extends Params = Params> implem...
    method constructor (line 72) | constructor(options: ServiceOptions) {
    method send (line 81) | send<X = any>(method: string, ...args: any[]) {
    method methods (line 109) | methods(this: any, ...names: string[]) {
    method _find (line 122) | _find(params: Params = {}) {
    method find (line 126) | find(params: Params = {}) {
    method _get (line 130) | _get(id: Id, params: Params = {}) {
    method get (line 138) | get(id: Id, params: Params = {}) {
    method _create (line 142) | _create(data: D, params: Params = {}) {
    method create (line 146) | create(data: D, params: Params = {}) {
    method _update (line 150) | _update(id: NullableId, data: D, params: Params = {}) {
    method update (line 158) | update(id: NullableId, data: D, params: Params = {}) {
    method _patch (line 166) | _patch(id: NullableId, data: D, params: Params = {}) {
    method patch (line 174) | patch(id: NullableId, data: D, params: Params = {}) {
    method _remove (line 178) | _remove(id: NullableId, params: Params = {}) {
    method remove (line 186) | remove(id: NullableId, params: Params = {}) {
    method off (line 193) | off(name: string, ...args: any[]) {

FILE: packages/transport-commons/src/http.ts
  constant METHOD_HEADER (line 5) | const METHOD_HEADER = 'x-service-method'
  type ServiceParams (line 7) | interface ServiceParams {
  function getServiceMethod (line 28) | function getServiceMethod(_httpMethod: string, id: unknown, headerOverri...
  function getStatusCode (line 58) | function getStatusCode(context: HookContext, body: any, location: string...
  function getResponse (line 80) | function getResponse(context: HookContext) {

FILE: packages/transport-commons/src/routing/index.ts
  type RouteLookup (line 5) | interface RouteLookup {
  type Application (line 11) | interface Application<Services, Settings> {

FILE: packages/transport-commons/src/routing/router.ts
  type LookupData (line 3) | interface LookupData {
  type LookupResult (line 7) | interface LookupResult<T> extends LookupData {
  class RouteNode (line 11) | class RouteNode<T = any> {
    method constructor (line 16) | constructor(
    method hasChildren (line 21) | get hasChildren() {
    method insert (line 25) | insert(path: string[], data: T): RouteNode<T> {
    method remove (line 58) | remove(path: string[]) {
    method lookup (line 83) | lookup(path: string[], info: LookupData): LookupResult<T> | null {
  class Router (line 118) | class Router<T = any> {
    method constructor (line 121) | constructor(public root: RouteNode<T> = new RouteNode<T>('', 0)) {}
    method getPath (line 123) | getPath(path: string) {
    method insert (line 133) | insert(path: string, data: T) {
    method remove (line 137) | remove(path: string) {
    method lookup (line 141) | lookup(path: string) {

FILE: packages/transport-commons/src/socket/index.ts
  type SocketOptions (line 6) | interface SocketOptions {
  function socket (line 14) | function socket({ done, emit, socketMap, socketKey, getParams }: SocketO...

FILE: packages/transport-commons/src/socket/utils.ts
  constant DEFAULT_PARAMS_POSITION (line 15) | const DEFAULT_PARAMS_POSITION = 1
  function normalizeError (line 23) | function normalizeError(e: any) {
  function getDispatcher (line 42) | function getDispatcher(emit: string, socketMap: WeakMap<RealTimeConnecti...
  function runMethod (line 69) | async function runMethod(

FILE: packages/transport-commons/test/channels/dispatch.test.ts
  class TestService (line 8) | class TestService {
    method create (line 11) | async create(payload: any) {
  method create (line 26) | create(data: any) {

FILE: packages/transport-commons/test/channels/index.test.ts
  method setup (line 34) | async setup() {}
  method publish (line 35) | publish() {

FILE: packages/transport-commons/test/client.test.ts
  type DummyCallback (line 8) | type DummyCallback = (err: any, data?: any) => void

FILE: packages/transport-commons/test/routing/index.test.ts
  method get (line 13) | get(id: string | number) {
  method get (line 67) | async get(id: string | number) {
  method get (line 101) | async get(id: any) {

FILE: packages/transport-commons/test/socket/index.test.ts
  class DummyService (line 7) | class DummyService {
    method get (line 8) | async get(id: Id, params: Params) {
    method create (line 12) | async create(data: any, params: Params) {
    method custom (line 19) | async custom(data: any, params: Params) {
  method getParams (line 42) | getParams() {

FILE: packages/transport-commons/test/socket/utils.test.ts
  method toJSON (line 27) | toJSON() {
  method dataFor (line 73) | dataFor(): null {
  method dataFor (line 102) | dataFor(): null {
  method get (line 206) | async get(id: number | string, params: Params) {
  method get (line 274) | get(id, params) {
  method get (line 297) | get(id: number | string) {
  method get (line 312) | get(id: number | string) {

FILE: packages/typebox/src/default-schemas.ts
  type DefaultAppConfiguration (line 109) | type DefaultAppConfiguration = Static<typeof defaultAppConfiguration>

FILE: packages/typebox/src/index.ts
  type TDataSchemaMap (line 17) | type TDataSchemaMap = {
  function StringEnum (line 53) | function StringEnum<T extends string[]>(allowedValues: [...T], options?:...
  function sortDefinition (line 75) | function sortDefinition<T extends TObject>(schema: T) {
  type QueryProperty (line 125) | type QueryProperty<T extends TSchema, X extends { [key: string]: TSchema...

FILE: packages/typebox/test/index.test.ts
  type Query (line 23) | type Query = Static<typeof querySchema>
  type Query (line 64) | type Query = Static<typeof querySchema>
  type Query (line 90) | type Query = Static<typeof querySchema>
Condensed preview — 549 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,068K chars).
[
  {
    "path": ".eslintrc.js",
    "chars": 876,
    "preview": "module.exports = {\n    \"env\": {\n        \"browser\": true,\n        \"es6\": true,\n        \"mocha\": true,\n        \"node\": tru"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 426,
    "preview": "# These are supported funding model platforms\n\ngithub: [daffl, marshallswain]\npatreon: # Replace with a single Patreon u"
  },
  {
    "path": ".github/contributing.md",
    "chars": 5811,
    "preview": "# Contributing to Feathers\n\nThank you for contributing to Feathers! :heart: :tada:\n\nFeathers embraces modularity and is "
  },
  {
    "path": ".github/issue_template.md",
    "chars": 945,
    "preview": "### Steps to reproduce\n\n(First please check that this issue is not already solved as [described\nhere](https://github.com"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 998,
    "preview": "### Summary\n\n(If you have not already please refer to the contributing guideline as [described\nhere](https://github.com/"
  },
  {
    "path": ".github/workflows/nodejs.yml",
    "chars": 840,
    "preview": "name: CI\n\non: [push, pull_request]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-"
  },
  {
    "path": ".github/workflows/update-dependencies.yml",
    "chars": 887,
    "preview": "name: Update dependencies\n\non:\n  schedule:\n    - cron: '0 0 1 * *'\n  workflow_dispatch:\njobs:\n  update-dependencies:\n   "
  },
  {
    "path": ".gitignore",
    "chars": 758,
    "preview": ".DS_Store\n\n# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverag"
  },
  {
    "path": ".mocharc.json",
    "chars": 153,
    "preview": "{\n  \"timeout\": 30000,\n  \"require\": [\"ts-node/register\", \"source-map-support/register\"],\n  \"reporter\": \"Dot\",\n  \"extensio"
  },
  {
    "path": ".nycrc",
    "chars": 609,
    "preview": "{\n  \"verbose\": false,\n  \"tempDirectory\": \"./coverage/.tmp\",\n  \"semistandard\": {\n    \"env\": [\n      \"mocha\"\n    ]\n  },\n  "
  },
  {
    "path": ".prettierrc",
    "chars": 127,
    "preview": "{\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"printWidth\": 110,\n  \"semi\": false,\n  \"trailingComma\": \"none\",\n  \"singleQuote\":"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 128655,
    "preview": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://co"
  },
  {
    "path": "LICENSE",
    "chars": 1089,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2024 Feathers Contributors\n\nPermission is hereby granted, free of charge, to any pe"
  },
  {
    "path": "README.md",
    "chars": 1554,
    "preview": "<a href=\"https://feathersjs.com\" title=\"FeathersJS\">\n  <img src=\"https://feathersjs.com/og.png\" alt=\"Feathers - The API "
  },
  {
    "path": "docs/.vitepress/components/Badges.vue",
    "chars": 290,
    "preview": "<script setup lang=\"ts\">\n// A style wrapper to make npm badges do flex-row.\n</script>\n\n<template>\n  <div class=\"badges\">"
  },
  {
    "path": "docs/.vitepress/components/BlockQuote.vue",
    "chars": 673,
    "preview": "<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n  // Can be tip, info, warning, dan"
  },
  {
    "path": "docs/.vitepress/components/Contributors.vue",
    "chars": 441,
    "preview": "<script setup lang=\"ts\">\nimport { contributors } from '../contributors'\n</script>\n\n<template>\n  <div flex=\"~ wrap gap2\" "
  },
  {
    "path": "docs/.vitepress/components/DatabaseBlock.vue",
    "chars": 318,
    "preview": "<script setup lang=\"ts\">\nimport { useGlobalDb } from '../theme/store'\n\ndefineProps({\n  globalId: String,\n  inline: Strin"
  },
  {
    "path": "docs/.vitepress/components/DatabaseSelect.vue",
    "chars": 580,
    "preview": "<script setup lang=\"ts\">\nimport { useGlobalDb } from '../theme/store'\nimport Select from './Select.vue'\n\nconst activeGlo"
  },
  {
    "path": "docs/.vitepress/components/FeaturesList.vue",
    "chars": 2096,
    "preview": "<template>\n  <ul\n    class=\"features-list\"\n    dir=\"auto\"\n    flex=\"~ col gap2 md:gap-3\"\n  >\n    <ListItem><a target=\"_b"
  },
  {
    "path": "docs/.vitepress/components/LanguageBlock.vue",
    "chars": 330,
    "preview": "<script setup lang=\"ts\">\nimport { useGlobalLanguage } from '../theme/store'\n\ndefineProps({\n  globalId: String,\n  inline:"
  },
  {
    "path": "docs/.vitepress/components/LanguageSelect.vue",
    "chars": 597,
    "preview": "<script setup lang=\"ts\">\nimport { useGlobalLanguage } from '../theme/store'\nimport Select from './Select.vue'\n\nconst act"
  },
  {
    "path": "docs/.vitepress/components/ListItem.vue",
    "chars": 1531,
    "preview": "<script setup lang=\"ts\">\nimport { computed, effectScope, onMounted, ref } from 'vue'\nimport { until, useElementVisibilit"
  },
  {
    "path": "docs/.vitepress/components/Logo.vue",
    "chars": 1875,
    "preview": "<template>\n  <svg\n    class=\"feathers-logo\"\n    viewBox=\"0 0 256 256\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/200"
  },
  {
    "path": "docs/.vitepress/components/Select.vue",
    "chars": 1867,
    "preview": "<script setup lang=\"ts\">\nimport { computed, onMounted, watch, ref } from 'vue'\nimport { useRoute } from 'vitepress'\n\nint"
  },
  {
    "path": "docs/.vitepress/components/Tab.vue",
    "chars": 824,
    "preview": "<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\n\nconst props = defineProps({\n  name: String,\n  globalId:"
  },
  {
    "path": "docs/.vitepress/components/Tabs.vue",
    "chars": 1650,
    "preview": "<script setup lang=\"ts\">\nimport { ref, watch, provide } from \"vue\"\nimport { useStorage } from \"@vueuse/core\"\nimport { us"
  },
  {
    "path": "docs/.vitepress/components/TeamMember.vue",
    "chars": 1693,
    "preview": "<script setup lang=\"ts\">\nimport type { CoreTeam } from '../contributors'\n\ndefineProps<{\n  avatar: CoreTeam['avatar']\n  n"
  },
  {
    "path": "docs/.vitepress/components.d.ts",
    "chars": 1637,
    "preview": "/* eslint-disable */\n// @ts-nocheck\n// biome-ignore lint: disable\n// oxlint-disable\n// ------\n// Generated by unplugin-v"
  },
  {
    "path": "docs/.vitepress/config.nav.ts",
    "chars": 597,
    "preview": "import { releases } from './meta'\n// import { version } from '../package.json'\n\nconst version = 5\n\nexport default [\n  { "
  },
  {
    "path": "docs/.vitepress/config.sidebar.ts",
    "chars": 11089,
    "preview": "const comparisonSidebar = [\n  {\n    text: 'Compare Feathers',\n    items: [\n      {\n        text: 'Overview',\n        lin"
  },
  {
    "path": "docs/.vitepress/config.ts",
    "chars": 3133,
    "preview": "import { defineConfig } from 'vitepress'\nimport { discord, font, github, ogImage, ogUrl, twitter, feathersDescription, f"
  },
  {
    "path": "docs/.vitepress/meta.ts",
    "chars": 1333,
    "preview": "// noinspection ES6PreferShortImport: IntelliJ IDE hint to avoid warning to use `~/contributors`, will fail on build if "
  },
  {
    "path": "docs/.vitepress/scripts/assets.ts",
    "chars": 2944,
    "preview": "import { promises as fs } from 'fs'\nimport fg from 'fast-glob'\nimport { font, preconnectHomeLinks, preconnectLinks } fro"
  },
  {
    "path": "docs/.vitepress/style/element-plus.scss",
    "chars": 177,
    "preview": "@forward 'element-plus/theme-chalk/src/common/var.scss' with (\n  $colors: (\n    'primary': (\n      'base': #745847\n    )"
  },
  {
    "path": "docs/.vitepress/style/main.postcss",
    "chars": 2905,
    "preview": "@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap');\n\n:root body {\n  font-family:\n"
  },
  {
    "path": "docs/.vitepress/style/vars.postcss",
    "chars": 2713,
    "preview": "/**\n * Colors\n * -------------------------------------------------------------------------- */\n\n:root {\n  --primary: #ed"
  },
  {
    "path": "docs/.vitepress/theme/FeathersLayout.vue",
    "chars": 358,
    "preview": "<script setup lang=\"ts\">\nimport DefaultTheme from 'vitepress/theme'\nimport Footer from '../../components/Footer.vue'\nimp"
  },
  {
    "path": "docs/.vitepress/theme/index.ts",
    "chars": 1384,
    "preview": "import googleAnalytics from 'vitepress-plugin-google-analytics'\nimport 'element-plus/theme-chalk/dark/css-vars.css'\n\nimp"
  },
  {
    "path": "docs/.vitepress/theme/pwa.ts",
    "chars": 83,
    "preview": "import { registerSW } from 'virtual:pwa-register'\n\nregisterSW({ immediate: true })\n"
  },
  {
    "path": "docs/.vitepress/theme/store.ts",
    "chars": 239,
    "preview": "import { createGlobalState, useStorage } from '@vueuse/core'\n\nexport const useGlobalLanguage = createGlobalState(() => u"
  },
  {
    "path": "docs/.vitepress/vite-env.d.ts",
    "chars": 186,
    "preview": "/// <reference types=\"vite/client\" />\n\ndeclare module '*.vue' {\n  import type { DefineComponent } from 'vue'\n  const com"
  },
  {
    "path": "docs/api/application.md",
    "chars": 11775,
    "preview": "---\noutline: deep\n---\n\n# Application\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/authentication-"
  },
  {
    "path": "docs/api/authentication/client.md",
    "chars": 8758,
    "preview": "---\noutline: deep\n---\n\n# Authentication Client\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/authe"
  },
  {
    "path": "docs/api/authentication/hook.md",
    "chars": 1936,
    "preview": "---\noutline: deep\n---\n\n# Authenticate Hook\n\nThe `authenticate` hook will use `params.authentication` of the service meth"
  },
  {
    "path": "docs/api/authentication/index.md",
    "chars": 1344,
    "preview": "---\noutline: deep\n---\n\n# Authentication Overview\n\nThe `@feathersjs/authentication` plugins provide a collection of tools"
  },
  {
    "path": "docs/api/authentication/jwt.md",
    "chars": 4257,
    "preview": "---\noutline: deep\n---\n\n# JWT Authentication\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/authenti"
  },
  {
    "path": "docs/api/authentication/local.md",
    "chars": 6701,
    "preview": "---\noutline: deep\n---\n\n# Local Authentication\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/authen"
  },
  {
    "path": "docs/api/authentication/oauth.md",
    "chars": 18958,
    "preview": "---\noutline: deep\n---\n\n# OAuth\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/authentication-oauth."
  },
  {
    "path": "docs/api/authentication/service.md",
    "chars": 15469,
    "preview": "---\noutline: deep\n---\n\n# Authentication Service\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/auth"
  },
  {
    "path": "docs/api/authentication/strategy.md",
    "chars": 2658,
    "preview": "---\noutline: deep\n---\n\n# Authentication Strategies\n\nAn authentication strategy is any object or class that implements at"
  },
  {
    "path": "docs/api/channels.md",
    "chars": 18719,
    "preview": "---\noutline: deep\n---\n\n# Channels\n\nOn a Feathers server with a real-time transport (like [Socket.io](./socketio.md)) con"
  },
  {
    "path": "docs/api/client/rest.md",
    "chars": 16338,
    "preview": "---\noutline: deep\n---\n\n# REST Client\n\nThe following chapter describes the use of\n\n- [@feathersjs/rest-client](#feathersj"
  },
  {
    "path": "docs/api/client/socketio.md",
    "chars": 13754,
    "preview": "---\noutline: deep\n---\n\n# Socket.io Client\n\n## socketio-client\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@f"
  },
  {
    "path": "docs/api/client.md",
    "chars": 7840,
    "preview": "---\noutline: deep\n---\n\n# Feathers Client\n\nOne of the most notable features of Feathers is that it can also be used as th"
  },
  {
    "path": "docs/api/configuration.md",
    "chars": 4665,
    "preview": "---\noutline: deep\n---\n\n# Configuration\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/configuration"
  },
  {
    "path": "docs/api/databases/adapters.md",
    "chars": 1602,
    "preview": "---\noutline: deep\n---\n\n# Overview\n\nFeathers database adapters are modules that provide [services](../services.md) that i"
  },
  {
    "path": "docs/api/databases/common.md",
    "chars": 9627,
    "preview": "---\noutline: deep\n---\n\n# Common API\n\nThe Feathers database adapters implement a common interface for initialization, pag"
  },
  {
    "path": "docs/api/databases/knex.md",
    "chars": 18678,
    "preview": "---\noutline: deep\n---\n\n# SQL Databases\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/knex.svg?styl"
  },
  {
    "path": "docs/api/databases/memory.md",
    "chars": 2068,
    "preview": "---\noutline: deep\n---\n\n# Memory Adapter\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/memory.svg?s"
  },
  {
    "path": "docs/api/databases/mongodb.md",
    "chars": 23721,
    "preview": "---\noutline: deep\n---\n\n# MongoDB\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/mongodb.svg?style=f"
  },
  {
    "path": "docs/api/databases/querying.md",
    "chars": 5162,
    "preview": "---\noutline: deep\n---\n\n# Querying\n\nAll official database adapters support a common way for querying, sorting, limiting a"
  },
  {
    "path": "docs/api/errors.md",
    "chars": 4877,
    "preview": "---\noutline: deep\n---\n\n# Errors\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/errors.svg?style=fla"
  },
  {
    "path": "docs/api/events.md",
    "chars": 6291,
    "preview": "---\noutline: deep\n---\n\n# Events\n\nEvents are the key part of Feathers real-time functionality. All events in Feathers are"
  },
  {
    "path": "docs/api/express.md",
    "chars": 19961,
    "preview": "---\noutline: deep\n---\n\n# Express\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/express.svg?style=f"
  },
  {
    "path": "docs/api/hooks.md",
    "chars": 14703,
    "preview": "---\noutline: deep\n---\n\n# Hooks\n\nHooks are pluggable middleware functions that can be registered **around**, **before**, "
  },
  {
    "path": "docs/api/index.md",
    "chars": 2971,
    "preview": "---\noutline: deep\n---\n\n# API\n\nThis section describes all the individual modules and APIs of Feathers.\n\n## Core\n\nFeathers"
  },
  {
    "path": "docs/api/koa.md",
    "chars": 8201,
    "preview": "---\noutline: deep\n---\n\n# Koa\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/koa.svg?style=flat-squa"
  },
  {
    "path": "docs/api/schema/index.md",
    "chars": 1607,
    "preview": "---\noutline: deep\n---\n\n# Schema Overview\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/schema.svg?"
  },
  {
    "path": "docs/api/schema/resolvers.md",
    "chars": 15113,
    "preview": "---\noutline: deep\n---\n\n# Resolvers\n\nResolvers dynamically resolve individual properties based on a context, in a Feather"
  },
  {
    "path": "docs/api/schema/schema.md",
    "chars": 8343,
    "preview": "---\noutline: deep\n---\n\n# JSON Schema\n\nAs an alternative to [TypeBox](./typebox.md), `@feathersjs/schema` also provides t"
  },
  {
    "path": "docs/api/schema/typebox.md",
    "chars": 40690,
    "preview": "---\noutline: deep\n---\n\n# TypeBox\n\n`@feathersjs/typebox` allows to define JSON schemas with [TypeBox](https://github.com/"
  },
  {
    "path": "docs/api/schema/validators.md",
    "chars": 5732,
    "preview": "---\noutline: deep\n---\n\n# Validators\n\n[Ajv](https://ajv.js.org/) is the default JSON Schema validator used by `@feathersj"
  },
  {
    "path": "docs/api/services.md",
    "chars": 13337,
    "preview": "---\noutline: deep\n---\n\n# Services\n\nServices are the heart of every Feathers application. Services are objects or instanc"
  },
  {
    "path": "docs/api/socketio.md",
    "chars": 6861,
    "preview": "---\noutline: deep\n---\n\n# Socket.io\n\n<Badges>\n\n[![npm version](https://img.shields.io/npm/v/@feathersjs/socketio.svg?styl"
  },
  {
    "path": "docs/auto-imports.d.ts",
    "chars": 193,
    "preview": "/* eslint-disable */\n/* prettier-ignore */\n// @ts-nocheck\n// noinspection JSUnusedGlobalSymbols\n// Generated by unplugin"
  },
  {
    "path": "docs/comparison.md",
    "chars": 709,
    "preview": "# Feathers vs others\n\nThe following sections compare Feathers to other software choices that seem similar or may overlap"
  },
  {
    "path": "docs/components/CTAButton.vue",
    "chars": 1011,
    "preview": "<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n  primary: Boolean,\n  href: String\n"
  },
  {
    "path": "docs/components/Footer.vue",
    "chars": 3682,
    "preview": "<script setup lang=\"ts\">\nimport FooterList from './FooterList.vue'\nimport { useData, useRoute } from 'vitepress'\nimport "
  },
  {
    "path": "docs/components/FooterList.vue",
    "chars": 315,
    "preview": "<script setup lang=\"ts\">\ndefineProps({\n  title: String,\n  items: Array,\n})\n</script>\n\n<template>\n  <ul class=\"text-lg\">\n"
  },
  {
    "path": "docs/components/HomeCTATextSection.vue",
    "chars": 303,
    "preview": "<script setup lang=\"ts\">\nimport CTAButton from './CTAButton.vue'\n\ndefineProps({\n  text: String,\n})\n</script>\n\n<template>"
  },
  {
    "path": "docs/components/HomeCreateFirstApp.vue",
    "chars": 542,
    "preview": "<template>\n  <div class=\"py-16 xl:py-24 bg-secondary text-center lg:text-lg\">\n    <h2 class=\"md:text-xl lg:text-2xl font"
  },
  {
    "path": "docs/components/HomeFeature1.vue",
    "chars": 485,
    "preview": "<script setup lang=\"ts\">\nimport HomeFeature1Content from \"./HomeFeature1Content.vue\"\n</script>\n\n<template>\n  <div>\n    <"
  },
  {
    "path": "docs/components/HomeFeature1Content.vue",
    "chars": 479,
    "preview": "<template>\n  <div class=\"py-6 md:py-0 px-6 md:text-sm prose text-center md:text-left xl:text-xl\">\n    <p>\n      Feathers"
  },
  {
    "path": "docs/components/HomeFeature2.vue",
    "chars": 554,
    "preview": "<script setup lang=\"ts\">\nimport HomeFeature2Content from \"./HomeFeature2Content.vue\"\n</script>\n\n<template>\n  <div class="
  },
  {
    "path": "docs/components/HomeFeature2Content.vue",
    "chars": 439,
    "preview": "<script setup lang=\"ts\">\nimport CTAButton from './CTAButton.vue'\n</script>\n\n<template>\n  <div class=\"py-6 md:py-0 px-12 "
  },
  {
    "path": "docs/components/HomeFeatureGrid.vue",
    "chars": 1972,
    "preview": "<script setup lang=\"ts\">\nimport HomeFeatureCard from './HomeFeatureGridCard.vue'\n\nconst cards = [\n  {\n    title: 'Fast',"
  },
  {
    "path": "docs/components/HomeFeatureGridCard.vue",
    "chars": 446,
    "preview": "<script setup lang=\"ts\">\ndefineProps({\n  title: String,\n  imgSrc: String,\n  description: String\n})\n</script>\n\n<template>"
  },
  {
    "path": "docs/components/HomeHero.vue",
    "chars": 4912,
    "preview": "<script setup lang=\"ts\">\nimport { onMounted, onBeforeUnmount } from 'vue'\nimport CTAButton from './CTAButton.vue'\nimport"
  },
  {
    "path": "docs/components/HomeIndustryPartners.vue",
    "chars": 732,
    "preview": "<template>\n  <div class=\"home-industry-partners text-center py-16\">\n    <div class=\"max-w-7xl mx-auto\">\n      <h2 class="
  },
  {
    "path": "docs/components/HomeQuickStart.vue",
    "chars": 450,
    "preview": "<script setup lang=\"ts\">\nimport CTAButton from './CTAButton.vue'\n</script>\n\n<template>\n  <div class=\"bg-neutral text-neu"
  },
  {
    "path": "docs/cookbook/authentication/_discord.md",
    "chars": 2941,
    "preview": "---\noutline: deep\n---\n\n# Discord\n\nDiscord login can be initialized like any other [OAuth provider](../../api/authenticat"
  },
  {
    "path": "docs/cookbook/authentication/anonymous.md",
    "chars": 2922,
    "preview": "---\noutline: deep\n---\n\n# Anonymous authentication\n\nAnonymous authentication can be allowed by creating a [custom strateg"
  },
  {
    "path": "docs/cookbook/authentication/apiKey.md",
    "chars": 5314,
    "preview": "# API Key Authentication\n\nWe will start by providing the required configuration for this strategy. You should change all"
  },
  {
    "path": "docs/cookbook/authentication/auth0.md",
    "chars": 3298,
    "preview": "---\noutline: deep\n---\n\n# Auth0\n\nTo enable OAuth logins with [Auth0](http://auth0.com), we need the following settings af"
  },
  {
    "path": "docs/cookbook/authentication/facebook.md",
    "chars": 4965,
    "preview": "---\noutline: deep\n---\n\n# Facebook\n\nFacebook login can be initialized like any other [OAuth provider](../../api/authentic"
  },
  {
    "path": "docs/cookbook/authentication/firebase.md",
    "chars": 9040,
    "preview": "---\noutline: deep\n---\n\n# Firebase\n\n[Firebase](https://firebase.google.com/docs/auth) requires a custom [OAuth Authentica"
  },
  {
    "path": "docs/cookbook/authentication/google.md",
    "chars": 3201,
    "preview": "---\noutline: deep\n---\n\n# Google\n\nTo enable Google login, add the app id, app secret and scope property to `config/defaul"
  },
  {
    "path": "docs/cookbook/authentication/revoke-jwt.md",
    "chars": 3637,
    "preview": "---\noutline: deep\n---\n\n# Revoking JWTs\n\nBy default a valid JWT can be used for as long as it is valid. To do a normal lo"
  },
  {
    "path": "docs/cookbook/authentication/stateless.md",
    "chars": 2015,
    "preview": "---\noutline: deep\n---\n\n# Stateless JWT\n\nBy default, an authentication token is associated to an entity (usually a user)."
  },
  {
    "path": "docs/cookbook/deploy/docker.md",
    "chars": 676,
    "preview": "---\noutline: deep\n---\n\n# Dockerize a Feathers application\n\nA Feathers application can be [dockerized like any other Node"
  },
  {
    "path": "docs/cookbook/express/file-uploading.md",
    "chars": 14075,
    "preview": "---\noutline: deep\n---\n\n# File uploads in FeathersJS\n\nOver the last months we at [ciancoders.com](https://ciancoders.com/"
  },
  {
    "path": "docs/cookbook/express/view-engine.md",
    "chars": 4578,
    "preview": "---\noutline: deep\n---\n\n# Server Side Rendering\n\nSince Feathers is just an extension of Express it's really simple to ren"
  },
  {
    "path": "docs/cookbook/general/client-test.md",
    "chars": 4021,
    "preview": "---\noutline: deep\n---\n\n# Client/server testing\n\nYou can write tests which start up both a server for your app, and a Fea"
  },
  {
    "path": "docs/cookbook/general/scaling.md",
    "chars": 2983,
    "preview": "---\noutline: deep\n---\n\n# Scaling\n\nDepending on your requirements, your feathers application may need to provide high ava"
  },
  {
    "path": "docs/cookbook/index.md",
    "chars": 389,
    "preview": "---\noutline: deep\n---\n\n# The Feathers cookbook\n\nThis cookbook contains a growing collection of recipes for common tasks "
  },
  {
    "path": "docs/ecosystem/PackageCard.vue",
    "chars": 4393,
    "preview": "<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { nFormatter } from './helpers'\nimport { formatDistance a"
  },
  {
    "path": "docs/ecosystem/Packages.vue",
    "chars": 7298,
    "preview": "<script setup lang=\"ts\">\nimport PackageCard from './PackageCard.vue'\nimport { PackageOutput } from './types'\nimport { re"
  },
  {
    "path": "docs/ecosystem/helpers.ts",
    "chars": 808,
    "preview": "export function nFormatter(num: number, digits?: number) {\n  const lookup = [\n    { value: 1, symbol: '' },\n    { value:"
  },
  {
    "path": "docs/ecosystem/index.md",
    "chars": 661,
    "preview": "---\nlastUpdated: false\n---\n\n<script setup lang=\"ts\">\nimport Packages from './Packages.vue'\n</script>\n\n# FeathersJS Ecosy"
  },
  {
    "path": "docs/ecosystem/types.ts",
    "chars": 911,
    "preview": "export type PackageInput = {\n  npm: string\n  repo: string\n}\n\nexport type PackagesInput = Record<string, PackageInput>\n\ne"
  },
  {
    "path": "docs/ecosystem/useQuery.ts",
    "chars": 1423,
    "preview": "import { Ref, watch } from 'vue'\nimport queryString from 'query-string'\n\ntype MaybeArray<T> = T | T[]\n\ntype FieldType = "
  },
  {
    "path": "docs/feathers-vs-firebase.md",
    "chars": 1778,
    "preview": "# Feathers vs Firebase\n\nFirebase is a hosted platform for mobile or web applications. Just like Feathers, Firebase provi"
  },
  {
    "path": "docs/feathers-vs-loopback.md",
    "chars": 2240,
    "preview": "# Feathers vs LoopBack\n\nBoth LoopBack, and Feathers are frameworks primarily meant for building APIs, and mediating betw"
  },
  {
    "path": "docs/feathers-vs-meteor.md",
    "chars": 2100,
    "preview": "# Feathers vs Meteor\n\nBoth Feathers and Meteor are open source real-time JavaScript platforms that provide front end and"
  },
  {
    "path": "docs/feathers-vs-nest.md",
    "chars": 730,
    "preview": "# Feathers vs Nest\n\nNest is a backend framework that have similar capabilities with Feathers.\n\nNest uses dependency inje"
  },
  {
    "path": "docs/feathers-vs-sails.md",
    "chars": 2242,
    "preview": "# Feathers vs Sails\n\nFrom a feature standpoint, Feathers and Sails are probably the most similar of the comparisons offe"
  },
  {
    "path": "docs/guides/basics/authentication.md",
    "chars": 2499,
    "preview": "---\noutline: deep\n---\n\n# Authentication\n\nAuthentication is an important aspect of any web application that involves user"
  },
  {
    "path": "docs/guides/basics/generator.md",
    "chars": 4077,
    "preview": "---\noutline: deep\n---\n\n# Creating an app\n\nIn the [quick start](./starting.md) we created a Feathers application in a sin"
  },
  {
    "path": "docs/guides/basics/hooks.md",
    "chars": 8542,
    "preview": "---\noutline: deep\n---\n\n# Hooks\n\nWhen we created our messages service in [the services chapter](./services.md), we saw th"
  },
  {
    "path": "docs/guides/basics/login.md",
    "chars": 9447,
    "preview": "# Logging in\n\nWe now have a fully functional chat application consisting of [services](./services.md) and [schemas](./sc"
  },
  {
    "path": "docs/guides/basics/schemas.md",
    "chars": 19903,
    "preview": "# Schemas and resolvers\n\nIn Feathers, schemas and resolvers allow us to define, validate and secure our data model and t"
  },
  {
    "path": "docs/guides/basics/services.md",
    "chars": 8140,
    "preview": "---\noutline: deep\n---\n\n# Services\n\nServices are the heart of every Feathers application. You probably remember the servi"
  },
  {
    "path": "docs/guides/basics/starting.md",
    "chars": 13939,
    "preview": "---\noutline: deep\n---\n\n# Quick start\n\nAlright then! Let's learn Feathers. In this quick start guide we'll create our fir"
  },
  {
    "path": "docs/guides/basics/testing.md",
    "chars": 11229,
    "preview": "---\noutline: deep\n---\n\n# Writing tests\n\nThe best way to test an application is by writing tests that make sure it behave"
  },
  {
    "path": "docs/guides/cli/app.md",
    "chars": 3632,
    "preview": "---\noutline: deep\n---\n\n# Application\n\nThe `src/app.ts` file is the main file where the [Feathers application](../../api/"
  },
  {
    "path": "docs/guides/cli/app.test.md",
    "chars": 560,
    "preview": "---\noutline: deep\n---\n\n# Application tests\n\nThe `app.test` file starts the server and then tests that it shows the index"
  },
  {
    "path": "docs/guides/cli/authentication.md",
    "chars": 1478,
    "preview": "---\noutline: deep\n---\n\n# Authentication\n\nThe file in `src/authentication.ts` sets up an [authentication service](../../a"
  },
  {
    "path": "docs/guides/cli/channels.md",
    "chars": 124,
    "preview": "# Channels\n\n> This page is currently a work in progress\n\nFor more information see the [channel API](../../api/channels.m"
  },
  {
    "path": "docs/guides/cli/client.md",
    "chars": 1414,
    "preview": "---\noutline: deep\n---\n\n# Client\n\nA generated application can be used as an npm module that provides a [Feathers client]("
  },
  {
    "path": "docs/guides/cli/client.test.md",
    "chars": 1551,
    "preview": "# Client test\n\nThe `client.test` file contains end-to-end integration tests for the [generated client](./client.md).\n\n##"
  },
  {
    "path": "docs/guides/cli/configuration.md",
    "chars": 961,
    "preview": "---\noutline: deep\n---\n\n### Configuration Schemas\n\nA generated application comes with a schema that validates the initial"
  },
  {
    "path": "docs/guides/cli/custom-environment-variables.md",
    "chars": 1581,
    "preview": "# Custom Environment Variables\n\nWhile `node-config` used for [application configuration](./default.json.md) recommends t"
  },
  {
    "path": "docs/guides/cli/databases.md",
    "chars": 2667,
    "preview": "---\noutline: deep\n---\n\n# Databases\n\n<hr/>\n<DatabaseSelect />\n\n## Connection\n\n<DatabaseBlock global-id=\"sql\">\n\nDepending "
  },
  {
    "path": "docs/guides/cli/declarations.md",
    "chars": 3610,
    "preview": "---\noutline: deep\n---\n\n# TypeScript\n\n<LanguageBlock global-id=\"ts\">\n\nThe main file for application specific TypeScript d"
  },
  {
    "path": "docs/guides/cli/default.json.md",
    "chars": 3170,
    "preview": "---\noutline: deep\n---\n\n# Application configuration\n\nA generated application uses the **[configuration module](../../api/"
  },
  {
    "path": "docs/guides/cli/hook.md",
    "chars": 3679,
    "preview": "---\noutline: deep\n---\n\n# Hooks\n\n## Generating a hook\n\nA new hook can be generated via\n\n```\nnpx feathers generate hook\n``"
  },
  {
    "path": "docs/guides/cli/index.md",
    "chars": 2062,
    "preview": "---\noutline: deep\n---\n\n# The Feathers CLI\n\nThe Feathers generator allows you to quickly scaffold a Feathers app with the"
  },
  {
    "path": "docs/guides/cli/knexfile.md",
    "chars": 835,
    "preview": "# Knexfile\n\n## Migrations\n\nMigrations are a best practise for SQL databases to roll out and undo changes to the data mod"
  },
  {
    "path": "docs/guides/cli/log-error.md",
    "chars": 352,
    "preview": "# Error logging hook\n\nThe `src/hooks/log-error.ts` file exports a `logError` hook that uses the [logger](./logger.md) to"
  },
  {
    "path": "docs/guides/cli/logger.md",
    "chars": 792,
    "preview": "---\noutline: deep\n---\n\n# Logging\n\n## Logger\n\nThe `src/logger.ts` file initialises the widely used [Winston logger](https"
  },
  {
    "path": "docs/guides/cli/package.md",
    "chars": 341,
    "preview": "# package.json\n\n## Folders\n\nThe source and test folders to which files are generated is set in the `package.json`. To ch"
  },
  {
    "path": "docs/guides/cli/prettierrc.md",
    "chars": 642,
    "preview": "# Prettier\n\nThe Feathers CLI uses [Prettier](https://prettier.io/) for code formatting and generates a configuration for"
  },
  {
    "path": "docs/guides/cli/service.class.md",
    "chars": 11354,
    "preview": "---\noutline: deep\n---\n\n# Service classes\n\nThe `<service>.class` file exports the [service class or object](../../api/ser"
  },
  {
    "path": "docs/guides/cli/service.md",
    "chars": 3262,
    "preview": "---\noutline: deep\n---\n\n# Service\n\nThe main service file registers the service on the [application](./app.md) as well as "
  },
  {
    "path": "docs/guides/cli/service.schemas.md",
    "chars": 4449,
    "preview": "---\noutline: deep\n---\n\n# Service Schemas and Resolvers\n\nThe `<service>.schemas` file contains the [schemas and resolvers"
  },
  {
    "path": "docs/guides/cli/service.shared.md",
    "chars": 873,
    "preview": "---\noutline: deep\n---\n\n# Service Shared\n\nThe `<service>.shared` file contains variables and type declarations that are s"
  },
  {
    "path": "docs/guides/cli/service.test.md",
    "chars": 2041,
    "preview": "---\noutline: deep\n---\n\n# Service tests\n\nThe `<service>.test` file contains tests for a specific service. By default it j"
  },
  {
    "path": "docs/guides/cli/tsconfig.md",
    "chars": 16,
    "preview": "# tsconfig.json\n"
  },
  {
    "path": "docs/guides/cli/validators.md",
    "chars": 1448,
    "preview": "---\noutline: deep\n---\n\n# Validators\n\nFor all currently supported schema types, AJV is used as the default validator. See"
  },
  {
    "path": "docs/guides/frameworks.md",
    "chars": 1879,
    "preview": "# Frontend Frameworks\n\nFeathers works the same on the server and on the client and is front-end framework agnostic. You "
  },
  {
    "path": "docs/guides/frontend/javascript.md",
    "chars": 15726,
    "preview": "---\noutline: deep\n---\n\n# JavaScript web app\n\nAs we have seen [in the quick start guide](../basics/starting.md), Feathers"
  },
  {
    "path": "docs/guides/index.md",
    "chars": 1722,
    "preview": "---\noutline: deep\n---\n\n# Getting started with Feathers\n\nWelcome to the Feathers guides! This is the place to find all th"
  },
  {
    "path": "docs/guides/migrating.md",
    "chars": 13780,
    "preview": "---\noutline: deep\n---\n\n# Migrating to v5\n\nThis guide explains the new features and changes necessary to migrate to the F"
  },
  {
    "path": "docs/guides/security.md",
    "chars": 3607,
    "preview": "# Security\n\nWe take security very seriously at Feathers. We welcome any peer review of our 100% open source code to ensu"
  },
  {
    "path": "docs/guides/whats-new.md",
    "chars": 18496,
    "preview": "---\noutline: deep\n---\n\n# What's New in v5\n\nFeathers Dove (v5) is a super-ambitious release which adds some really great "
  },
  {
    "path": "docs/help/faq.md",
    "chars": 18788,
    "preview": "---\noutline: deep\n---\n\n# FAQ\n\nWe've been collecting some commonly asked questions here. We'll either be updating the gui"
  },
  {
    "path": "docs/help/index.md",
    "chars": 1699,
    "preview": "---\noutline: deep\n---\n\n# Getting Help\n\nThere are many ways that you can get help if you are stuck or have a question abo"
  },
  {
    "path": "docs/index.md",
    "chars": 796,
    "preview": "---\nlayout: page\nsidebar: false\n\ntitle: Feathers\ntitleTemplate: The API and Real-time Application Framework\n---\n\n<script"
  },
  {
    "path": "docs/package.json",
    "chars": 1312,
    "preview": "{\n  \"name\": \"docs\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vitepress --port 3333 --open\",\n   "
  },
  {
    "path": "docs/public/_headers",
    "chars": 533,
    "preview": "/\n  X-Frame-Options: DENY\n  X-XSS-Protection: 1; mode=block\n\n/api/\n  X-Frame-Options: DENY\n  X-XSS-Protection: 1; mode=b"
  },
  {
    "path": "docs/public/_redirects",
    "chars": 1371,
    "preview": "# Crow Redirects\n\n/migrating.html                             /guides/migrating.html\n/security.html                     "
  },
  {
    "path": "docs/public/feathers-chat.css",
    "chars": 10970,
    "preview": ":root {\n  font-synthesis: none;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-"
  },
  {
    "path": "docs/public/robots.txt",
    "chars": 23,
    "preview": "User-agent: *\nAllow: /\n"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 1294,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"module\": \"esnext\",\n    \"lib\": [\"esnext\", \"dom\"],\n    \"moduleResolu"
  },
  {
    "path": "docs/vite.config.ts",
    "chars": 3999,
    "preview": "import fs from 'fs'\nimport type { Plugin } from 'vite'\nimport { defineConfig } from 'vite'\nimport AutoImport from 'unplu"
  },
  {
    "path": "generators/package/index.tpl.ts",
    "chars": 413,
    "preview": "import { generator, renderTemplate, toFile } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\nin"
  },
  {
    "path": "generators/package/license.tpl.ts",
    "chars": 1442,
    "preview": "import { generator, renderTemplate, toFile } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\nin"
  },
  {
    "path": "generators/package/package.json.tpl.ts",
    "chars": 1809,
    "preview": "import { generator, toFile, writeJSON } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\ninterfa"
  },
  {
    "path": "generators/package/readme.md.tpl.ts",
    "chars": 1097,
    "preview": "import { generator, renderTemplate, toFile } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\nco"
  },
  {
    "path": "generators/package/test.tpl.ts",
    "chars": 599,
    "preview": "import { generator, renderTemplate, toFile } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\nin"
  },
  {
    "path": "generators/package/tsconfig.json.tpl.ts",
    "chars": 415,
    "preview": "import { generator, toFile, writeJSON } from '@featherscloud/pinion'\nimport { ModuleContext } from '../package'\n\nexport "
  },
  {
    "path": "generators/package.ts",
    "chars": 1201,
    "preview": "import type { Callable, PinionContext } from '@featherscloud/pinion'\nimport { generator, install, prompt, runGenerators,"
  },
  {
    "path": "lerna.json",
    "chars": 485,
    "preview": "{\n  \"ci\": false,\n  \"packages\": [\"packages/*\"],\n  \"version\": \"5.0.42\",\n  \"command\": {\n    \"bootstrap\": {\n      \"hoist\": t"
  },
  {
    "path": "package.json",
    "chars": 2680,
    "preview": "{\n  \"name\": \"@feathersjs/feathers\",\n  \"private\": true,\n  \"homepage\": \"http://feathersjs.com\",\n  \"repository\": {\n    \"typ"
  },
  {
    "path": "packages/adapter-commons/CHANGELOG.md",
    "chars": 35170,
    "preview": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://co"
  },
  {
    "path": "packages/adapter-commons/LICENSE",
    "chars": 1089,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2024 Feathers Contributors\n\nPermission is hereby granted, free of charge, to any pe"
  },
  {
    "path": "packages/adapter-commons/README.md",
    "chars": 993,
    "preview": "# Feathers Adapter Commons\n\n[![CI](https://github.com/feathersjs/feathers/workflows/Node.js%20CI/badge.svg)](https://git"
  },
  {
    "path": "packages/adapter-commons/package.json",
    "chars": 1673,
    "preview": "{\n  \"name\": \"@feathersjs/adapter-commons\",\n  \"version\": \"5.0.42\",\n  \"description\": \"Shared database adapter utility func"
  },
  {
    "path": "packages/adapter-commons/src/declarations.ts",
    "chars": 6302,
    "preview": "import { Query, Params, Paginated, Id, PaginationParams, PaginationOptions } from '@feathersjs/feathers'\n\nexport type Fi"
  },
  {
    "path": "packages/adapter-commons/src/index.ts",
    "chars": 799,
    "preview": "import { _ } from '@feathersjs/commons'\nimport { Params } from '@feathersjs/feathers'\n\nexport * from './declarations'\nex"
  },
  {
    "path": "packages/adapter-commons/src/query.ts",
    "chars": 4588,
    "preview": "import { _ } from '@feathersjs/commons'\nimport { BadRequest } from '@feathersjs/errors'\nimport { Query } from '@feathers"
  },
  {
    "path": "packages/adapter-commons/src/service.ts",
    "chars": 6967,
    "preview": "import { Id, Paginated, Query } from '@feathersjs/feathers'\nimport {\n  AdapterParams,\n  AdapterServiceOptions,\n  Interna"
  },
  {
    "path": "packages/adapter-commons/src/sort.ts",
    "chars": 2983,
    "preview": "// Sorting algorithm taken from NeDB (https://github.com/louischatriot/nedb)\n// See https://github.com/louischatriot/ned"
  },
  {
    "path": "packages/adapter-commons/test/commons.test.ts",
    "chars": 1835,
    "preview": "import assert from 'assert'\nimport { select } from '../src'\n\ndescribe('@feathersjs/adapter-commons', () => {\n  describe("
  },
  {
    "path": "packages/adapter-commons/test/fixture.ts",
    "chars": 3630,
    "preview": "import { AdapterBase, AdapterParams, PaginationOptions } from '../src'\nimport { Id, NullableId, Paginated } from '@feath"
  },
  {
    "path": "packages/adapter-commons/test/query.test.ts",
    "chars": 8506,
    "preview": "import assert from 'assert'\nimport { ObjectId } from 'mongodb'\nimport { filterQuery } from '../src'\n\ndescribe('@feathers"
  },
  {
    "path": "packages/adapter-commons/test/service.test.ts",
    "chars": 5631,
    "preview": "/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/ban-ts-comment */\nimport assert from 'assert'\nim"
  },
  {
    "path": "packages/adapter-commons/test/sort.test.ts",
    "chars": 9187,
    "preview": "import assert from 'assert'\nimport { sorter } from '../src'\n\ndescribe('@feathersjs/adapter-commons', () => {\n  describe("
  },
  {
    "path": "packages/adapter-commons/tsconfig.json",
    "chars": 124,
    "preview": "{\n  \"extends\": \"../../tsconfig\",\n  \"include\": [\n    \"src/**/*.ts\"\n  ],\n  \"compilerOptions\": {\n    \"outDir\": \"lib\"    \n  "
  },
  {
    "path": "packages/adapter-tests/CHANGELOG.md",
    "chars": 25451,
    "preview": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://co"
  },
  {
    "path": "packages/adapter-tests/LICENSE",
    "chars": 1089,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2024 Feathers Contributors\n\nPermission is hereby granted, free of charge, to any pe"
  },
  {
    "path": "packages/adapter-tests/README.md",
    "chars": 967,
    "preview": "# Feathers Adapter Tests\n\n[![CI](https://github.com/feathersjs/feathers/workflows/Node.js%20CI/badge.svg)](https://githu"
  },
  {
    "path": "packages/adapter-tests/package.json",
    "chars": 1475,
    "preview": "{\n  \"name\": \"@feathersjs/adapter-tests\",\n  \"version\": \"5.0.42\",\n  \"description\": \"Feathers shared database adapter test "
  },
  {
    "path": "packages/adapter-tests/src/basic.ts",
    "chars": 1346,
    "preview": "import assert from 'assert'\nimport { AdapterBasicTest } from './declarations'\n\nexport default (test: AdapterBasicTest, a"
  },
  {
    "path": "packages/adapter-tests/src/declarations.ts",
    "chars": 2471,
    "preview": "export type AdapterTest = (name: AdapterTestName, runner: any) => void\n\nexport type AdapterBasicTest = (name: AdapterBas"
  },
  {
    "path": "packages/adapter-tests/src/index.ts",
    "chars": 1682,
    "preview": "/* eslint-disable no-console */\nimport basicTests from './basic'\nimport { AdapterTestName } from './declarations'\nimport"
  },
  {
    "path": "packages/adapter-tests/src/methods.ts",
    "chars": 23616,
    "preview": "import assert from 'assert'\nimport { AdapterMethodsTest } from './declarations'\n\nexport default (test: AdapterMethodsTes"
  },
  {
    "path": "packages/adapter-tests/src/syntax.ts",
    "chars": 10323,
    "preview": "import assert from 'assert'\nimport { AdapterSyntaxTest } from './declarations'\n\nexport default (test: AdapterSyntaxTest,"
  },
  {
    "path": "packages/adapter-tests/test/index.test.ts",
    "chars": 1799,
    "preview": "import { strict as assert } from 'assert'\nimport adapterTests from '../src'\n\nconst testSuite = adapterTests([\n  '.events"
  }
]

// ... and 349 more files (download for full content)

About this extraction

This page contains the full source code of the feathersjs/feathers GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 549 files (2.8 MB), approximately 762.5k tokens, and a symbol index with 1024 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!