GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - typesense/typesense-js: JavaScript / TypeScript client for Typesense

BranchesTags
Open more actions menu

Latest commit

 

History

1,131 Commits
1,131 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
dist
dist
 
 
doc/examples
doc/examples
 
 
lib
lib
 
 
src
src
 
 
test
test
 
 
.babelrc
.babelrc
 
 
.gitignore
.gitignore
 
 
.nvmrc
.nvmrc
 
 
.prettierrc
.prettierrc
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
codecov.yml
codecov.yml
 
 
eslint.config.cjs
eslint.config.cjs
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
mocha.opts
mocha.opts
 
 
package.json
package.json
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
tsconfig.json
tsconfig.json
 
 
tsconfig.test.json
tsconfig.test.json
 
 
vitest.config.ts
vitest.config.ts
 
 
webpack.config.js
webpack.config.js
 
 

Repository files navigation

typesense-js NPM version downloads

Javascript client library for accessing the Typesense HTTP API.

This library can be used both on the server-side and on the client-side. The library's source is in ES6 and during build time, we transpile it to ES5 and generate two artifacts - one that can be used on the server-side and another that uses Browserify and can be used on the client side.

Installation

Option 1: Install via npm

npm install --save typesense

Install peer dependencies:

npm install --save @babel/runtime

Note: @babel/runtime is very a common dependency among many JS libraries. So instead of each library adding it as a dependency independently (which will cause multiple instances of @babel/runtime to be installed increasing bundle size), Babel's recommendation is that the libraries ask users to install it once as a direct dependency, so there's only one copy of @babel/runtime for the entire project. In some cases, your JS framework might already include @babel/runtime as a dependency.

Option 2: Include the minified JS file for use in the browser directly

<script src="dist/typesense.min.js"></script>

or via jsDelivr

<script src="https://cdn.jsdelivr.net/npm/typesense@3/dist/typesense.min.js"></script>

Usage

Read the documentation here for detailed examples: https://typesense.org/docs/api/

Tests are also a good place to know how the library works internally: test

Note: When using this library in a browser, please be sure to use an API Key that only allows search operations instead of the master API key. See doc/examples/server/keys.js for an example of how to generate a search only API key.

See Configuration.ts for a list of all client configuration options.

Request Timeouts and Abort Signals

The client supports both global timeout configuration and per-request abort signals:

Global Timeout Configuration

const client = new Typesense.Client({
  nodes: [{ host: "localhost", port: "8108", protocol: "http" }],
  apiKey: "xyz",
  connectionTimeoutSeconds: 30, // 30 second timeout for all requests
});

Per-Request Abort Signals

// Search with 5-second timeout
const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);

const results = await client.collections("books").documents().search(
  {
    q: "*",
    query_by: "title",
  },
  { abortSignal: controller.signal },
);

// Collections with 2-second timeout
const collectionsController = new AbortController();
setTimeout(() => collectionsController.abort(), 2000);

const collections = await client.collections().retrieve({
  abortSignal: collectionsController.signal,
});

Note: The import() operation doesn't support abort signals or timeout configuration as it's designed to run to completion.

Examples

Here are some examples with inline comments that walk you through how to use the client: doc/examples

To run the examples, from the repo root:

pnpm typesenseServer
node doc/examples/server/bulkImport.js

GatsbyJS Integration

If you use GatsbyJS for a framework, we have a plugin (that uses typesense-js behind the scenes) to automatically push your site data to Typesense when you build your site. Learn more here.

Firebase Integration

If you use Firebase, we have a Firebase extension (that uses typesense-js behind the scenes) to automatically push your Firestore data to Typesense. Learn more here.

Building UI components

Checkout the Typesense-InstantSearch.js (which uses typesense-js) for UI components you can use to quickly build powerful instant search experiences.

Compatibility

This table refers to server=>client compatibility. Newer versions of the client library maintain backwards compatibility with older versions of the server library.

Typesense Server typesense-js
>= v30.0 >= v3.0.0
>= v27.0.rc20 >= v2.0.0
>= v0.26.0.rc38 >= v1.8.0
>= v0.25.0 >= v1.7.0
>= v0.24.0 >= v1.5.0
>= v0.23.0 >= v1.3.0
>= v0.21.0 >= v0.14.0
>= v0.20.0 >= v0.12.0
>= v0.19.0 >= v0.11.0
>= v0.18.0 >= v0.10.0
>= v0.17.0 >= v0.9.0
>= v0.16.0 >= v0.8.0
>= v0.15.0 >= v0.7.0
>= v0.12.1 >= v0.5.0
>= v0.12.0 >= v0.4.7
<= v0.11 <= v0.3.0

Development

After checking out the repo, run pnpm install to install dependencies. Then run pnpm test:local to run the linter and tests.

To release a new version, we use the np package:

$ npm install --global np
$ np

# Follow instructions that np shows you

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/typesense/typesense-js.

About

JavaScript / TypeScript client for Typesense

typesense.org/docs/api

Topics

javascriptsearchtypescripttypesensetypesense-js

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

574 stars

Watchers

8 watching

Forks

102 forks
Report repository

Releases

Sponsor this project

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.