Skip to content

typesense module for Deno #95

@Sembiance

Description

@Sembiance

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 of import ApiCall from './ApiCall' use import ApiCall from './ApiCall.ts'
    Also Errors, instead of import { ObjectNotFound } from './Errors' use import { ObjectNotFound } from './Errors/ObjectNotFound.ts'

  • Keys.ts needs modified to use the hmac and base64 modules from Deno:
    Change: import { createHmac } from 'crypto' to

import {hmac} from "https://deno.land/x/[email protected]/mod.ts";
import {encode as base64Encode} from "https://deno.land/[email protected]/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 ReadStream Deno equilivant

  • All of axios needs replaced in ApiCall.ts Maybe you could use the Deno version https://github.com/roonie007/axiod but much more ideally you could use the built in Deno fetch support

  • Lastly, there may be other 'nodejs' specific APIs being used in the code that I didn't look for

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions