typesense / typesense/typesense-js
typesense module for Deno
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 569
- Forks
- 99
- Avg merge
- 5h 6m
- Merged PRs (30d)
- 2
Description
It would be awesome if there was a Deno compatible typesense module.
You can almost directly import * as Typsense from src/Typesense.ts but there are some issue:
-
Deno requires all local imports to have explict .ts extensions
So instead ofimport ApiCall from './ApiCall'useimport ApiCall from './ApiCall.ts'
Also Errors, instead ofimport { ObjectNotFound } from './Errors'useimport { ObjectNotFound } from './Errors/ObjectNotFound.ts' -
Keys.ts needs modified to use the
hmacandbase64modules from Deno:
Change:import { createHmac } from 'crypto'to
import {hmac} from "https://deno.land/x/hmac@v2.0.1/mod.ts";
import {encode as base64Encode} from "https://deno.land/std@0.118.0/encoding/base64.ts"
And change lines
const digest = Buffer.from(createHmac('sha256', searchKey).update(paramsJSON).digest('base64'))
return Buffer.from(rawScopedKey).toString('base64')
to
const digest = hmac("sha256", searchKey, paramsJSON, "utf8", "base64")
return base64Encode(rawScopedKey);
- Configuration.js needs a loglevel replacement. I just used a stub:
this.logger =
{
trace : v => console.log(v),
debug : v => console.log(v),
info : v => console.info(v),
warn : v => console.warn(v),
error : v => console.error(v),
log : v => console.log(v),
setLevel : () => {}
}
This is where I gave up because there are at least 3 remaining issues:
-
Documents.ts needs a
ReadStreamDeno equilivant -
All of
axiosneeds replaced in ApiCall.ts Maybe you could use the Deno versionhttps://github.com/roonie007/axiodbut much more ideally you could use the built in Denofetchsupport -
Lastly, there may be other 'nodejs' specific APIs being used in the code that I didn't look for
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by auditing the imports and runtime APIs in src/Typesense.ts, Keys.ts, Configuration.js, Documents.ts, and ApiCall.ts for Deno incompatibilities. Review the listed extension, crypto, logging, stream, and HTTP concerns, then verify that the client can run under Deno without the remaining Node.js-specific APIs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- deno, typescript
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100