Skip to content

Commit

Permalink
Use namespace imports
Browse files Browse the repository at this point in the history
Namespace imports make dev faster and build smaller for bundlers without three shaking.

https://www.effect.website/docs/essentials/importing
  • Loading branch information
steida committed Dec 23, 2023
1 parent 326a846 commit a2068f2
Show file tree
Hide file tree
Showing 32 changed files with 134 additions and 108 deletions.
13 changes: 13 additions & 0 deletions .changeset/eight-pants-add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"@evolu/common-react": patch
"@evolu/react-native": patch
"@evolu/common-web": patch
"@evolu/common": patch
"@evolu/server": patch
---

Use namespace imports

Namespace imports make dev faster and build smaller for bundlers without three shaking.

https://www.effect.website/docs/essentials/importing
2 changes: 1 addition & 1 deletion packages/evolu-common-react/src/useEvoluError.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { EvoluError } from "@evolu/common";
import { Function } from "effect";
import * as Function from "effect/Function";
import { useSyncExternalStore } from "react";
import { useEvolu } from "./useEvolu.js";

Expand Down
2 changes: 1 addition & 1 deletion packages/evolu-common-react/src/useOwner.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Owner } from "@evolu/common";
import { Function } from "effect";
import * as Function from "effect/Function";
import { useSyncExternalStore } from "react";
import { useEvolu } from "./useEvolu.js";

Expand Down
2 changes: 1 addition & 1 deletion packages/evolu-common-react/src/useQuerySubscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
emptyRows,
queryResultFromRows,
} from "@evolu/common";
import { Function } from "effect";
import * as Function from "effect/Function";
import { useEffect, useMemo, useRef, useSyncExternalStore } from "react";
import { useEvolu } from "./useEvolu.js";

Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common-web/src/DbWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import {
SyncWorker,
SyncWorkerOutput,
} from "@evolu/common";
import { Effect, Function, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import * as Layer from "effect/Layer";
import { Bip39Live } from "./PlatformLive.js";
import { SqliteLive } from "./SqliteLive.js";

Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common-web/src/DbWorkerLive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import {
PlatformName,
makeUnexpectedError,
} from "@evolu/common";
import { Effect, Function, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import * as Layer from "effect/Layer";

export const DbWorkerLive = Layer.effect(
DbWorker,
Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common-web/src/PlatformLive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import {
SyncLock,
canUseDom,
} from "@evolu/common";
import { Effect, Function, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import * as Layer from "effect/Layer";
import { flushSync } from "react-dom";

const isChromeWithOpfs = (): boolean =>
Expand Down
3 changes: 2 additions & 1 deletion packages/evolu-common-web/src/SqliteLive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import {
valuesToSqliteValues,
} from "@evolu/common";
import sqlite3InitModule from "@sqlite.org/sqlite-wasm";
import { Effect, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";

const sqlitePromise = sqlite3InitModule().then((sqlite3) =>
canUseDom
Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common-web/src/SyncWorker.worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ import {
SyncWorkerInput,
SyncWorkerLive,
} from "@evolu/common";
import { Effect, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";

import { SyncLockLive } from "./PlatformLive.js";

const syncWorker = Effect.provide(
Expand Down
3 changes: 2 additions & 1 deletion packages/evolu-common-web/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {
Mnemonic,
makeCreateEvolu,
} from "@evolu/common";
import { Effect, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import { DbWorkerLive } from "./DbWorkerLive.js";
import {
AppStateLive,
Expand Down
3 changes: 2 additions & 1 deletion packages/evolu-common/src/Config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Context, Layer } from "effect";
import * as Context from "effect/Context";
import * as Layer from "effect/Layer";

export interface Config {
/** Alternate URL to Evolu sync and backup server. */
Expand Down
22 changes: 10 additions & 12 deletions packages/evolu-common/src/Crdt.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
import * as S from "@effect/schema/Schema";
import {
Brand,
Context,
Effect,
Either,
Layer,
Number,
Option,
ReadonlyArray,
String,
pipe,
} from "effect";
import * as Brand from "effect/Brand";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Either from "effect/Either";
import { pipe } from "effect/Function";
import * as Layer from "effect/Layer";
import * as Number from "effect/Number";
import * as Option from "effect/Option";
import * as ReadonlyArray from "effect/ReadonlyArray";
import * as String from "effect/String";
import { Config } from "./Config.js";
import { NanoId, NodeId } from "./Crypto.js";
import { murmurhash } from "./Murmurhash.js";
Expand Down
5 changes: 4 additions & 1 deletion packages/evolu-common/src/Crypto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ import { concatBytes } from "@noble/ciphers/utils";
import { hmac } from "@noble/hashes/hmac";
import { sha512 } from "@noble/hashes/sha512";
import { randomBytes } from "@noble/hashes/utils";
import { Brand, Context, Effect, Layer } from "effect";
import * as Brand from "effect/Brand";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import { customAlphabet, nanoid } from "nanoid";

// TODO: Add dynamic import error.
Expand Down
28 changes: 13 additions & 15 deletions packages/evolu-common/src/Db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,18 @@ import * as AST from "@effect/schema/AST";
import * as S from "@effect/schema/Schema";
import { make } from "@effect/schema/Schema";
import { bytesToHex } from "@noble/ciphers/utils";
import {
Brand,
Context,
Effect,
Exit,
Layer,
Option,
Predicate,
ReadonlyArray,
ReadonlyRecord,
String,
Types,
pipe,
} from "effect";
import * as Brand from "effect/Brand";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Exit from "effect/Exit";
import { pipe } from "effect/Function";
import * as Layer from "effect/Layer";
import * as Option from "effect/Option";
import * as Predicate from "effect/Predicate";
import * as ReadonlyArray from "effect/ReadonlyArray";
import * as ReadonlyRecord from "effect/ReadonlyRecord";
import * as String from "effect/String";
import * as Types from "effect/Types";
import * as Kysely from "kysely";
import {
initialMerkleTree,
Expand All @@ -24,6 +22,7 @@ import {
timestampToString,
} from "./Crdt.js";
import { Bip39, Mnemonic, NanoId } from "./Crypto.js";
import { EvoluTypeError } from "./ErrorStore.js";
import { Id, SqliteBoolean, SqliteDate } from "./Model.js";
import { Owner, makeOwner } from "./Owner.js";
import {
Expand All @@ -40,7 +39,6 @@ import {
isJsonObjectOrArray,
} from "./Sqlite.js";
import { Store, makeStore } from "./Store.js";
import { EvoluTypeError } from "./ErrorStore.js";

export type DatabaseSchema = ReadonlyRecord.ReadonlyRecord<TableSchema>;

Expand Down
20 changes: 9 additions & 11 deletions packages/evolu-common/src/DbWorker.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { hexToBytes } from "@noble/ciphers/utils";
import {
Context,
Effect,
Function,
Layer,
Match,
Option,
ReadonlyArray,
ReadonlyRecord,
pipe,
} from "effect";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import { pipe } from "effect/Function";
import * as Layer from "effect/Layer";
import * as Match from "effect/Match";
import * as Option from "effect/Option";
import * as ReadonlyArray from "effect/ReadonlyArray";
import * as ReadonlyRecord from "effect/ReadonlyRecord";
import { Config, ConfigLive } from "./Config.js";
import {
MerkleTree,
Expand Down
3 changes: 2 additions & 1 deletion packages/evolu-common/src/Diff.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Predicate, ReadonlyArray } from "effect";
import * as Predicate from "effect/Predicate";
import * as ReadonlyArray from "effect/ReadonlyArray";
import { Query, Row } from "./Db.js";
import { Value } from "./Sqlite.js";

Expand Down
2 changes: 1 addition & 1 deletion packages/evolu-common/src/ErrorStore.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Effect } from "effect";
import * as Effect from "effect/Effect";
import { TimestampError } from "./Crdt.js";
import { makeStore } from "./Store.js";

Expand Down
22 changes: 10 additions & 12 deletions packages/evolu-common/src/Evolu.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
import * as S from "@effect/schema/Schema";
import {
Context,
Effect,
Function,
GlobalValue,
Layer,
Match,
Number,
ReadonlyArray,
pipe,
} from "effect";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import { pipe } from "effect/Function";
import * as GlobalValue from "effect/GlobalValue";
import * as Layer from "effect/Layer";
import * as Match from "effect/Match";
import * as Number from "effect/Number";
import * as ReadonlyArray from "effect/ReadonlyArray";
import * as Kysely from "kysely";
import { Config, ConfigLive } from "./Config.js";
import { Time, TimeLive } from "./Crdt.js";
import { Mnemonic, NanoId, NanoIdLive } from "./Crypto.js";
import {
DatabaseSchema,
Queries,
Query,
QueryResult,
QueryResultsPromisesFromQueries,
Row,
RowsStore,
RowsStoreLive,
DatabaseSchema,
emptyRows,
queryResultFromRows,
schemaToTables,
Expand Down
2 changes: 1 addition & 1 deletion packages/evolu-common/src/Model.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as S from "@effect/schema/Schema";
import { Brand } from "effect";
import * as Brand from "effect/Brand";
import { maybeJson } from "./Sqlite.js";

/**
Expand Down
7 changes: 6 additions & 1 deletion packages/evolu-common/src/OnCompletes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { Brand, Context, Effect, Layer, Option, ReadonlyArray } from "effect";
import * as Brand from "effect/Brand";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as Option from "effect/Option";
import * as ReadonlyArray from "effect/ReadonlyArray";
import { NanoId } from "./Crypto.js";

export interface OnCompletes {
Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common/src/Owner.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Brand, Context, Effect } from "effect";
import * as Brand from "effect/Brand";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import { urlAlphabet } from "nanoid";
import { Bip39, Mnemonic, slip21Derive } from "./Crypto.js";
import { Id } from "./Model.js";
Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-common/src/Platform.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Context, Effect, Layer } from "effect";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";

export type PlatformName =
| "server"
Expand Down
5 changes: 4 additions & 1 deletion packages/evolu-common/src/Sqlite.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { Context, Effect, Predicate, ReadonlyRecord } from "effect";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Predicate from "effect/Predicate";
import * as ReadonlyRecord from "effect/ReadonlyRecord";

export interface Sqlite {
readonly exec: (
Expand Down
2 changes: 1 addition & 1 deletion packages/evolu-common/src/Store.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Effect } from "effect";
import * as Effect from "effect/Effect";

export type Listener = () => void;

Expand Down
23 changes: 10 additions & 13 deletions packages/evolu-common/src/SyncWorker.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
import * as S from "@effect/schema/Schema";
import { concatBytes } from "@noble/ciphers/utils";
import { BinaryReader, BinaryWriter } from "@protobuf-ts/runtime";
import {
Context,
Effect,
Equivalence,
Function,
Layer,
Match,
Option,
Predicate,
ReadonlyArray,
absurd,
identity,
} from "effect";
import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Equivalence from "effect/Equivalence";
import * as Function from "effect/Function";
import { absurd, identity } from "effect/Function";
import * as Layer from "effect/Layer";
import * as Match from "effect/Match";
import * as Option from "effect/Option";
import * as Predicate from "effect/Predicate";
import * as ReadonlyArray from "effect/ReadonlyArray";
import {
MerkleTree,
Millis,
Expand Down
4 changes: 3 additions & 1 deletion packages/evolu-react-native/src/PlatformLive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ import {
validateMnemonic,
} from "@scure/bip39";
import { wordlist } from "@scure/bip39/wordlists/english";
import { Effect, Function, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Function from "effect/Function";
import * as Layer from "effect/Layer";
import { reloadAsync } from "expo-updates";
import { DevSettings, AppState as ReactNativeAppState } from "react-native";

Expand Down
3 changes: 2 additions & 1 deletion packages/evolu-react-native/src/SqliteLive.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {
maybeParseJson,
valuesToSqliteValues,
} from "@evolu/common";
import { Effect, Layer } from "effect";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as SQLite from "expo-sqlite";

const db = SQLite.openDatabase("evolu1.db");
Expand Down
Loading

1 comment on commit a2068f2

@vercel
Copy link

@vercel vercel bot commented on a2068f2 Dec 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

evolu – ./

evolu-git-main-evolu.vercel.app
evolu-evolu.vercel.app
evolu.dev
evolu.vercel.app
www.evolu.dev

Please sign in to comment.