effect-mongodb 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Collection/package.json +6 -0
- package/Db/package.json +6 -0
- package/DocumentCollection/package.json +6 -0
- package/DocumentFindCursor/package.json +6 -0
- package/FindCursor/package.json +6 -0
- package/LICENSE +21 -0
- package/MongoClient/package.json +6 -0
- package/MongoError/package.json +6 -0
- package/README.md +28 -0
- package/dist/cjs/Collection.js +33 -0
- package/dist/cjs/Collection.js.map +1 -0
- package/dist/cjs/Db.js +36 -0
- package/dist/cjs/Db.js.map +1 -0
- package/dist/cjs/DocumentCollection.js +29 -0
- package/dist/cjs/DocumentCollection.js.map +1 -0
- package/dist/cjs/DocumentFindCursor.js +41 -0
- package/dist/cjs/DocumentFindCursor.js.map +1 -0
- package/dist/cjs/FindCursor.js +65 -0
- package/dist/cjs/FindCursor.js.map +1 -0
- package/dist/cjs/MongoClient.js +20 -0
- package/dist/cjs/MongoClient.js.map +1 -0
- package/dist/cjs/MongoError.js +33 -0
- package/dist/cjs/MongoError.js.map +1 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/version.js +14 -0
- package/dist/cjs/internal/version.js.map +1 -0
- package/dist/dts/Collection.d.ts +37 -0
- package/dist/dts/Collection.d.ts.map +1 -0
- package/dist/dts/Db.d.ts +30 -0
- package/dist/dts/Db.d.ts.map +1 -0
- package/dist/dts/DocumentCollection.d.ts +39 -0
- package/dist/dts/DocumentCollection.d.ts.map +1 -0
- package/dist/dts/DocumentFindCursor.d.ts +40 -0
- package/dist/dts/DocumentFindCursor.d.ts.map +1 -0
- package/dist/dts/FindCursor.d.ts +40 -0
- package/dist/dts/FindCursor.d.ts.map +1 -0
- package/dist/dts/MongoClient.d.ts +21 -0
- package/dist/dts/MongoClient.d.ts.map +1 -0
- package/dist/dts/MongoError.d.ts +21 -0
- package/dist/dts/MongoError.d.ts.map +1 -0
- package/dist/dts/index.d.ts +29 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/version.d.ts +3 -0
- package/dist/dts/internal/version.d.ts.map +1 -0
- package/dist/esm/Collection.js +24 -0
- package/dist/esm/Collection.js.map +1 -0
- package/dist/esm/Db.js +25 -0
- package/dist/esm/Db.js.map +1 -0
- package/dist/esm/DocumentCollection.js +20 -0
- package/dist/esm/DocumentCollection.js.map +1 -0
- package/dist/esm/DocumentFindCursor.js +30 -0
- package/dist/esm/DocumentFindCursor.js.map +1 -0
- package/dist/esm/FindCursor.js +52 -0
- package/dist/esm/FindCursor.js.map +1 -0
- package/dist/esm/MongoClient.js +10 -0
- package/dist/esm/MongoClient.js.map +1 -0
- package/dist/esm/MongoError.js +23 -0
- package/dist/esm/MongoError.js.map +1 -0
- package/dist/esm/index.js +29 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/version.js +6 -0
- package/dist/esm/internal/version.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +93 -0
- package/src/Collection.ts +130 -0
- package/src/Db.ts +79 -0
- package/src/DocumentCollection.ts +128 -0
- package/src/DocumentFindCursor.ts +90 -0
- package/src/FindCursor.ts +138 -0
- package/src/MongoClient.ts +35 -0
- package/src/MongoError.ts +40 -0
- package/src/index.ts +34 -0
- package/src/internal/version.ts +7 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.0.1
|
|
3
|
+
*/
|
|
4
|
+
import type * as Brand from "effect/Brand"
|
|
5
|
+
import * as Effect from "effect/Effect"
|
|
6
|
+
import * as F from "effect/Function"
|
|
7
|
+
import type { Db, DbOptions, MongoClientOptions } from "mongodb"
|
|
8
|
+
import { MongoClient as MongoClient_ } from "mongodb"
|
|
9
|
+
import * as MongoError from "./MongoError.js"
|
|
10
|
+
|
|
11
|
+
import * as Context from "effect/Context"
|
|
12
|
+
|
|
13
|
+
export type MongoClient = MongoClient_
|
|
14
|
+
|
|
15
|
+
export const connect = (url: string, options?: MongoClientOptions) =>
|
|
16
|
+
Effect.promise(() => MongoClient_.connect(url, options)).pipe(
|
|
17
|
+
Effect.catchAll(MongoError.mongoErrorDie<MongoClient_>("connect error"))
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
export const db: {
|
|
21
|
+
(dbName?: string, options?: DbOptions): (client: MongoClient) => Db
|
|
22
|
+
(client: MongoClient, dbName?: string, options?: DbOptions): Db
|
|
23
|
+
} = F.dual(
|
|
24
|
+
(args) => isMongoClient(args[0]),
|
|
25
|
+
(client: MongoClient, dbName?: string, options?: DbOptions) => client.db(dbName, options)
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
const isMongoClient = (x: unknown) => x instanceof MongoClient_
|
|
29
|
+
|
|
30
|
+
export type MongoClientService<K extends string> = {
|
|
31
|
+
client: Effect.Effect<MongoClient, MongoError.MongoError>
|
|
32
|
+
} & Brand.Brand<K>
|
|
33
|
+
|
|
34
|
+
export const Tag = <K extends string>(key: K) => Context.GenericTag<MongoClientService<K>>(key)
|
|
35
|
+
export type TagType<K extends string> = ReturnType<typeof Tag<K>>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.0.1
|
|
3
|
+
*/
|
|
4
|
+
import * as Data from "effect/Data"
|
|
5
|
+
import * as Effect from "effect/Effect"
|
|
6
|
+
import * as F from "effect/Function"
|
|
7
|
+
import * as Match from "effect/Match"
|
|
8
|
+
import * as Stream from "effect/Stream"
|
|
9
|
+
import { MongoError as MongoError_ } from "mongodb"
|
|
10
|
+
|
|
11
|
+
export class MongoError extends Data.TaggedError("MongoError")<{
|
|
12
|
+
message: string
|
|
13
|
+
innerError: MongoError_
|
|
14
|
+
}> {}
|
|
15
|
+
|
|
16
|
+
export const mongoErrorDie: {
|
|
17
|
+
<A>(message: string): (error: unknown) => Effect.Effect<A, MongoError>
|
|
18
|
+
<A>(error: unknown, message: string): Effect.Effect<A, MongoError>
|
|
19
|
+
} = F.dual(2, <A>(error: unknown, message: string): Effect.Effect<A, MongoError> =>
|
|
20
|
+
F.pipe(
|
|
21
|
+
Match.value(error),
|
|
22
|
+
Match.when(Match.instanceOf(MongoError_), (innerError) => Effect.fail(new MongoError({ message, innerError }))),
|
|
23
|
+
Match.orElse((cause) =>
|
|
24
|
+
Effect.die(
|
|
25
|
+
new Error(message, {
|
|
26
|
+
cause
|
|
27
|
+
})
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
))
|
|
31
|
+
|
|
32
|
+
export const mongoErrorStream: {
|
|
33
|
+
<A>(message: string): (error: unknown) => Stream.Stream<A, MongoError>
|
|
34
|
+
<A>(error: unknown, message: string): Stream.Stream<A, MongoError>
|
|
35
|
+
} = F.dual(2, <A>(error: unknown, message: string): Stream.Stream<A, MongoError> =>
|
|
36
|
+
F.pipe(
|
|
37
|
+
Match.value(error),
|
|
38
|
+
Match.when(Match.instanceOf(MongoError_), (innerError) => Stream.fail(new MongoError({ message, innerError }))),
|
|
39
|
+
Match.orElse((cause) => Stream.die(new Error(message, { cause })))
|
|
40
|
+
))
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 0.0.1
|
|
3
|
+
*/
|
|
4
|
+
export * as Collection from "./Collection.js"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @since 0.0.1
|
|
8
|
+
*/
|
|
9
|
+
export * as Db from "./Db.js"
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 0.0.1
|
|
13
|
+
*/
|
|
14
|
+
export * as DocumentCollection from "./DocumentCollection.js"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 0.0.1
|
|
18
|
+
*/
|
|
19
|
+
export * as DocumentFindCursor from "./DocumentFindCursor.js"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 0.0.1
|
|
23
|
+
*/
|
|
24
|
+
export * as FindCursor from "./FindCursor.js"
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @since 0.0.1
|
|
28
|
+
*/
|
|
29
|
+
export * as MongoClient from "./MongoClient.js"
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @since 0.0.1
|
|
33
|
+
*/
|
|
34
|
+
export * as MongoError from "./MongoError.js"
|