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