Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
kysely-supabase
Advanced tools
Supabase is a combination of open-source tools. They're building the features of Firebase using enterprise-grade, open-source products. If the tools and communities exist, with an MIT, Apache 2, or equivalent open license, they will use and support that tool. If the tool doesn't exist, they build and open-source it themselves. Supabase is not a 1-to-1 mapping of Firebase. Their aim is to give developers a Firebase-like developer experience using open-source tools.
As of Apr 6, 2024, @supabase/supabase-js
(the client library) has 292,860 weekly downloads on npm, while supabase
(the CLI) has 80,273 weekly downloads on npm. It is a popular all-in-one development platform for Node.js and TypeScript.
Their CLI supports TypeScript type generation from your Supabase-managed PostgreSQL database, and their client library provides a nice, albeit restrictive, auto-completion friendly, and type-safe developer experience. For anything beyond what the client library's API offers, you're left with writing raw SQL and using PostgreSQL drivers like pg
or postgres
, or some abstraction where you codegen or define schema/types again.
Kysely (pronounced “Key-Seh-Lee”) is a type-safe and autocompletion-friendly TypeScript SQL query builder. Inspired by Knex. Mainly developed for Node.js but also runs on Deno and in the browser.
kysely-supabase
is a toolkit (type translators for now) that allows using your existing Supabase setup with Kysely.
npm i kysely @supabase/supabase-js
npm i -D kysely-supabase supabase
For PostgreSQL:
npm i pg
or
npm i kysely-postgres-js postgres
Translate your Supabase-generated Database
type to Kysely's Database
interface via the KyselifyDatabase
helper type.
src/types/database.ts
:
import type {Database as SupabaseDatabase} from 'path/to/supabase/generated/types/file'
import type {KyselifyDatabase} from 'kysely-supabase'
export type Database = KyselifyDatabase<SupabaseDatabase>
Create a Kysely instance. Pass to it your Database
type.
src/kysely.ts
:
import {Kysely, PostgresDialect} from 'kysely'
import {Pool} from 'pg'
import type {Database} from './types/database'
export const kysely = new Kysely<Database>({
dialect: new PostgresDialect({
pool: new Pool({
connectionString: process.env.DATABASE_URL,
}),
}),
})
or when using postgres
instead of pg
as the underlying driver:
import {Kysely} from 'kysely'
import {PostgresJSDialect} from 'kysely-postgres-js'
import postgres from 'postgres'
import type {Database} from './types/database'
export const kysely = new Kysely<Database>({
dialect: new PostgresJSDialect({
postgres: postgres(process.env.DATABASE_URL),
}),
})
KyselifyDatabase
helper type was inspired by Gilbert's issue.
FAQs
Kysely type translators for Supabase
The npm package kysely-supabase receives a total of 334 weekly downloads. As such, kysely-supabase popularity was classified as not popular.
We found that kysely-supabase demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.