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.
Files changed (74) hide show
  1. package/Collection/package.json +6 -0
  2. package/Db/package.json +6 -0
  3. package/DocumentCollection/package.json +6 -0
  4. package/DocumentFindCursor/package.json +6 -0
  5. package/FindCursor/package.json +6 -0
  6. package/LICENSE +21 -0
  7. package/MongoClient/package.json +6 -0
  8. package/MongoError/package.json +6 -0
  9. package/README.md +28 -0
  10. package/dist/cjs/Collection.js +33 -0
  11. package/dist/cjs/Collection.js.map +1 -0
  12. package/dist/cjs/Db.js +36 -0
  13. package/dist/cjs/Db.js.map +1 -0
  14. package/dist/cjs/DocumentCollection.js +29 -0
  15. package/dist/cjs/DocumentCollection.js.map +1 -0
  16. package/dist/cjs/DocumentFindCursor.js +41 -0
  17. package/dist/cjs/DocumentFindCursor.js.map +1 -0
  18. package/dist/cjs/FindCursor.js +65 -0
  19. package/dist/cjs/FindCursor.js.map +1 -0
  20. package/dist/cjs/MongoClient.js +20 -0
  21. package/dist/cjs/MongoClient.js.map +1 -0
  22. package/dist/cjs/MongoError.js +33 -0
  23. package/dist/cjs/MongoError.js.map +1 -0
  24. package/dist/cjs/index.js +23 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/internal/version.js +14 -0
  27. package/dist/cjs/internal/version.js.map +1 -0
  28. package/dist/dts/Collection.d.ts +37 -0
  29. package/dist/dts/Collection.d.ts.map +1 -0
  30. package/dist/dts/Db.d.ts +30 -0
  31. package/dist/dts/Db.d.ts.map +1 -0
  32. package/dist/dts/DocumentCollection.d.ts +39 -0
  33. package/dist/dts/DocumentCollection.d.ts.map +1 -0
  34. package/dist/dts/DocumentFindCursor.d.ts +40 -0
  35. package/dist/dts/DocumentFindCursor.d.ts.map +1 -0
  36. package/dist/dts/FindCursor.d.ts +40 -0
  37. package/dist/dts/FindCursor.d.ts.map +1 -0
  38. package/dist/dts/MongoClient.d.ts +21 -0
  39. package/dist/dts/MongoClient.d.ts.map +1 -0
  40. package/dist/dts/MongoError.d.ts +21 -0
  41. package/dist/dts/MongoError.d.ts.map +1 -0
  42. package/dist/dts/index.d.ts +29 -0
  43. package/dist/dts/index.d.ts.map +1 -0
  44. package/dist/dts/internal/version.d.ts +3 -0
  45. package/dist/dts/internal/version.d.ts.map +1 -0
  46. package/dist/esm/Collection.js +24 -0
  47. package/dist/esm/Collection.js.map +1 -0
  48. package/dist/esm/Db.js +25 -0
  49. package/dist/esm/Db.js.map +1 -0
  50. package/dist/esm/DocumentCollection.js +20 -0
  51. package/dist/esm/DocumentCollection.js.map +1 -0
  52. package/dist/esm/DocumentFindCursor.js +30 -0
  53. package/dist/esm/DocumentFindCursor.js.map +1 -0
  54. package/dist/esm/FindCursor.js +52 -0
  55. package/dist/esm/FindCursor.js.map +1 -0
  56. package/dist/esm/MongoClient.js +10 -0
  57. package/dist/esm/MongoClient.js.map +1 -0
  58. package/dist/esm/MongoError.js +23 -0
  59. package/dist/esm/MongoError.js.map +1 -0
  60. package/dist/esm/index.js +29 -0
  61. package/dist/esm/index.js.map +1 -0
  62. package/dist/esm/internal/version.js +6 -0
  63. package/dist/esm/internal/version.js.map +1 -0
  64. package/dist/esm/package.json +4 -0
  65. package/package.json +93 -0
  66. package/src/Collection.ts +130 -0
  67. package/src/Db.ts +79 -0
  68. package/src/DocumentCollection.ts +128 -0
  69. package/src/DocumentFindCursor.ts +90 -0
  70. package/src/FindCursor.ts +138 -0
  71. package/src/MongoClient.ts +35 -0
  72. package/src/MongoError.ts +40 -0
  73. package/src/index.ts +34 -0
  74. 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"
@@ -0,0 +1,7 @@
1
+ let moduleVersion = "0.0.2"
2
+
3
+ export const getCurrentVersion = () => moduleVersion
4
+
5
+ export const setCurrentVersion = (version: string) => {
6
+ moduleVersion = version
7
+ }