Skip to content

Commit

Permalink
chore (drivers): extract drivers to a separate package (#1332)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin-dp authored Jun 26, 2024
1 parent 837ce92 commit af6a7be
Show file tree
Hide file tree
Showing 142 changed files with 5,593 additions and 3,784 deletions.
8 changes: 8 additions & 0 deletions .changeset/shy-clouds-camp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"electric-sql": patch
"@electric-sql/drivers": patch
"@electric-sql/debug-toolbar": patch
"@electric-sql/cli": patch
---

Extract drivers to separate package
6 changes: 3 additions & 3 deletions .github/workflows/cli_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 22
cache: pnpm
- run: make deps
- run: pnpm run check-styleguide
Expand All @@ -44,7 +44,7 @@ jobs:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 22
cache: pnpm
- run: make deps
- run: pnpm run typecheck
Expand All @@ -53,7 +53,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: [16, 18, 20]
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
Expand Down
87 changes: 87 additions & 0 deletions .github/workflows/drivers_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Drivers / Tests

on:
workflow_call:
push:
branches:
- main
pull_request:
paths:
- 'pnpm-lock.yaml'
- 'components/drivers/**'
- '!components/drivers/**.md'

defaults:
run:
working-directory: components/drivers

concurrency:
group: drivers-${{ github.ref }}
cancel-in-progress: true

jobs:
verify_formatting:
name: Check formatting & linting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 22
cache: pnpm
- run: make deps
- run: pnpm run check-styleguide
check_types:
name: Check types
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: 22
cache: pnpm
- run: make deps
- run: pnpm run typecheck
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
- name: Install
run: make deps
- name: Build
run: make build
- name: Run tests
run: make tests
maybe_publish:
runs-on: ubuntu-latest
needs: [test, check_types, verify_formatting]
if: ${{ github.ref_name == 'main' }}
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
- run: make deps
- run: pnpm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}"
- run: make publish-canary
1 change: 1 addition & 0 deletions clients/typescript/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ build_generator:

deps:
pnpm install --frozen-lockfile
make -C ../../components/drivers build
# npm install tslint tslint-config-prettier

node_modules:
Expand Down
50 changes: 8 additions & 42 deletions clients/typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,9 @@
"**/*": "prettier --write --ignore-unknown"
},
"dependencies": {
"@electric-sql/drivers": "workspace:*",
"async-mutex": "^0.4.0",
"base-64": "^1.0.0",
"better-sqlite3": "^11.0.0",
"exponential-backoff": "^3.1.0",
"jose": "^4.14.4",
"lodash.flow": "^3.5.0",
Expand All @@ -209,8 +209,6 @@
},
"devDependencies": {
"@electric-sql/pglite": "^0.1.5",
"@op-engineering/op-sqlite": ">= 2.0.16",
"@tauri-apps/plugin-sql": "2.0.0-alpha.5",
"@testing-library/react": "^13.4.0",
"@types/base-64": "^1.0.0",
"@types/better-sqlite3": "7.6.10",
Expand All @@ -225,76 +223,47 @@
"@types/lodash.throttle": "^4.1.7",
"@types/lodash.uniqwith": "^4.5.9",
"@types/node": "^18.8.4",
"@types/pg": "^8.11.0",
"@types/react": "^18.0.18",
"@types/react": "^18.3.1",
"@types/ws": "^8.5.3",
"@typescript-eslint/eslint-plugin": "^5.34.0",
"@typescript-eslint/parser": "^5.34.0",
"@typescript-eslint/eslint-plugin": "^7.14.1",
"@typescript-eslint/parser": "^7.14.1",
"@vue/test-utils": "^2.4.4",
"ava": "^4.3.1",
"better-sqlite3": "^11.0.0",
"concurrently": "^8.2.2",
"embedded-postgres": "16.1.1-beta.9",
"eslint": "^8.22.0",
"eslint": "^8.57.0",
"expo-sqlite": "^13.1.0",
"glob": "^10.3.10",
"global-jsdom": "24.0.0",
"jsdom": "24.0.0",
"lint-staged": "^13.1.0",
"memorystorage": "^0.12.0",
"nodemon": "^3.0.2",
"pg": "^8.11.3",
"prettier": "2.8.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"shx": "^0.3.4",
"ts-proto": "^1.125.0",
"tsup": "^8.0.1",
"tsx": "^4.1.1",
"tsx": "^4.15.7",
"typeorm": "^0.3.9",
"typescript": "^5.3.3",
"vue": "^3.4.19",
"vue-tsc": "^1.8.27",
"wa-sqlite": "rhashimoto/wa-sqlite#semver:^0.9.8"
"vue-tsc": "^1.8.27"
},
"peerDependencies": {
"@capacitor-community/sqlite": ">= 5.6.2",
"@electric-sql/pglite": ">= 0.1.5",
"@op-engineering/op-sqlite": ">= 2.0.16",
"@tauri-apps/plugin-sql": "2.0.0-alpha.5",
"embedded-postgres": "16.1.1-beta.9",
"expo-sqlite": ">= 13.0.0",
"pg": "^8.11.3",
"prisma": "4.8.1",
"react": ">= 16.8.0",
"react-dom": ">= 16.8.0",
"react-native": ">= 0.68.0",
"typeorm": ">=0.3.0",
"vue": ">=3.0.0",
"wa-sqlite": "rhashimoto/wa-sqlite#semver:^0.9.8",
"zod": "3.21.1"
},
"peerDependenciesMeta": {
"@capacitor-community/sqlite": {
"optional": true
},
"@electric-sql/pglite": {
"optional": true
},
"@op-engineering/op-sqlite": {
"optional": true
},
"@tauri-apps/plugin-sql": {
"optional": true
},
"embedded-postgres": {
"optional": true
},
"expo-sqlite": {
"optional": true
},
"pg": {
"optional": true
},
"prisma": {
"optional": true
},
Expand All @@ -312,9 +281,6 @@
},
"vue": {
"optional": true
},
"wa-sqlite": {
"optional": true
}
}
}
21 changes: 11 additions & 10 deletions clients/typescript/src/client/conversions/datatypes/date.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,19 @@ export function serialiseDate(v: Date, pgType: PgDateType): string {

// Deserialises a SQLite compatible date string into a `Date` object
export function deserialiseDate(v: string, pgType: PgDateType): Date {
const parse = (v: any) => {
const millis = Date.parse(v)
if (isNaN(millis))
throw new Error(`Could not parse date, invalid format: ${v}`)
else return new Date(millis)
}

switch (pgType) {
case PgDateType.PG_TIMESTAMP:
case PgDateType.PG_TIMESTAMPTZ:
case PgDateType.PG_DATE:
return parse(v)
return parseDate(v)

case PgDateType.PG_TIME:
// interpret as local time
return parse(`1970-01-01 ${v}`)
return parseDate(`1970-01-01 ${v}`)

case PgDateType.PG_TIMETZ:
// interpret as UTC time
return parse(`1970-01-01 ${v}+00`)
return parseDate(`1970-01-01 ${v}+00`)
}
}

Expand Down Expand Up @@ -74,3 +67,11 @@ function extractDateAndTime(v: Date): ExtractedDateTime {
]
return { date, time }
}

/** Function to parse Postgres date values (dates, timestamps, etc.) */
function parseDate(v: any): Date {
const millis = Date.parse(v)
if (isNaN(millis))
throw new Error(`Could not parse date, invalid format: ${v}`)
else return new Date(millis)
}
2 changes: 1 addition & 1 deletion clients/typescript/src/client/execution/db.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RunResult } from '../../electric/adapter'
import { RunResult } from '@electric-sql/drivers'
import { QueryBuilder } from 'squel'
import * as z from 'zod'
import { Row, Statement } from '../../util'
Expand Down
2 changes: 1 addition & 1 deletion clients/typescript/src/client/execution/executor.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DatabaseAdapter, RunResult } from '../../electric/adapter'
import { DatabaseAdapter, RunResult } from '@electric-sql/drivers'
import { QueryBuilder } from 'squel'
import { DB } from './db'
import { TransactionalDB } from './transactionalDB'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DatabaseAdapter, RunResult } from '../../electric/adapter'
import { DatabaseAdapter, RunResult } from '@electric-sql/drivers'
import { QueryBuilder } from 'squel'
import { DB } from './db'
import * as z from 'zod'
Expand Down
2 changes: 1 addition & 1 deletion clients/typescript/src/client/execution/transactionalDB.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RunResult, Transaction } from '../../electric/adapter'
import { RunResult, Transaction } from '@electric-sql/drivers'
import { QueryBuilder } from 'squel'
import { DB } from './db'
import * as z from 'zod'
Expand Down
2 changes: 1 addition & 1 deletion clients/typescript/src/client/model/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from '../../util'
import { LiveResultContext } from './model'
import { Notifier } from '../../notifiers'
import { DatabaseAdapter } from '../../electric/adapter'
import { DatabaseAdapter } from '@electric-sql/drivers'
import {
GlobalRegistry,
Registry,
Expand Down
2 changes: 1 addition & 1 deletion clients/typescript/src/client/model/table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from '../validation/validation'
import { UpdateInput, UpdateManyInput } from '../input/updateInput'
import { DeleteInput, DeleteManyInput } from '../input/deleteInput'
import { DatabaseAdapter } from '../../electric/adapter'
import { DatabaseAdapter } from '@electric-sql/drivers'
import { Builder, makeFilter } from './builder'
import { Executor } from '../execution/executor'
import { BatchPayload } from '../output/batchPayload'
Expand Down
4 changes: 2 additions & 2 deletions clients/typescript/src/drivers/better-sqlite3/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import {

import { DbName } from '../../util/types'

import { DatabaseAdapter } from './adapter'
import { Database } from './database'
import { DatabaseAdapter } from '@electric-sql/drivers/better-sqlite3'
import type { Database } from '@electric-sql/drivers/better-sqlite3'
import { ElectricClient } from '../../client/model/client'
import { DbSchema } from '../../client/model/schema'
import { WebSocketNode } from '../../sockets/node'
Expand Down
4 changes: 2 additions & 2 deletions clients/typescript/src/drivers/capacitor-sqlite/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import {
electrify as baseElectrify,
} from '../../electric/index'

import { DatabaseAdapter } from './adapter'
import { DatabaseAdapter } from '@electric-sql/drivers/capacitor-sqlite'
import { ElectricConfig } from '../../config'
import { Database } from './database'
import type { Database } from '@electric-sql/drivers/capacitor-sqlite'
import { WebSocketWeb } from '../../sockets/web'
import { ElectricClient } from '../../client/model/client'
import { DbSchema } from '../../client/model/schema'
Expand Down
8 changes: 5 additions & 3 deletions clients/typescript/src/drivers/capacitor-sqlite/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import { Notifier } from '../../notifiers/index'
import { MockNotifier } from '../../notifiers/mock'
import { MockRegistry } from '../../satellite/mock'

import { DatabaseAdapter as CapacitorSQLiteAdapter } from './adapter'
import { Database } from './database'
import { MockDatabase } from './mock'
import {
DatabaseAdapter as CapacitorSQLiteAdapter,
MockDatabase,
} from '@electric-sql/drivers/capacitor-sqlite'
import type { Database } from '@electric-sql/drivers/capacitor-sqlite'
import { MockSocket } from '../../sockets/mock'
import { ElectricClient } from '../../client/model/client'
import { ElectricConfig } from '../../config'
Expand Down
4 changes: 2 additions & 2 deletions clients/typescript/src/drivers/expo-sqlite-next/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import {
electrify as baseElectrify,
} from '../../electric/index'

import { DatabaseAdapter } from './adapter'
import { DatabaseAdapter } from '@electric-sql/drivers/expo-sqlite-next'
import { ElectricConfig } from '../../config'
import { Database } from './database'
import type { Database } from '@electric-sql/drivers/expo-sqlite-next'

import { ElectricClient } from '../../client/model/client'
import { DbSchema } from '../../client/model/schema'
Expand Down
8 changes: 5 additions & 3 deletions clients/typescript/src/drivers/expo-sqlite-next/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import { Notifier } from '../../notifiers/index'
import { MockNotifier } from '../../notifiers/mock'
import { MockRegistry } from '../../satellite/mock'

import { DatabaseAdapter } from './adapter'
import { Database } from './database'
import { MockDatabase } from './mock'
import {
DatabaseAdapter,
MockDatabase,
} from '@electric-sql/drivers/expo-sqlite-next'
import type { Database } from '@electric-sql/drivers/expo-sqlite-next'
import { MockSocket } from '../../sockets/mock'
import { ElectricConfig } from '../../config'
import { ElectricClient } from '../../client/model/client'
Expand Down
Loading

0 comments on commit af6a7be

Please sign in to comment.