@shivaedev/effect-prisma 0.7.1 → 0.9.0

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 (110) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +198 -155
  3. package/dist/database.d.ts +7 -7
  4. package/dist/database.d.ts.map +1 -1
  5. package/dist/database.js +12 -8
  6. package/dist/database.js.map +1 -1
  7. package/dist/databaseTypes.d.ts +33 -0
  8. package/dist/databaseTypes.d.ts.map +1 -0
  9. package/dist/{internal/database-types.js → databaseTypes.js} +1 -1
  10. package/dist/databaseTypes.js.map +1 -0
  11. package/dist/error.d.ts.map +1 -1
  12. package/dist/internal/adapters/transaction-settlement.d.ts.map +1 -1
  13. package/dist/internal/adapters/transaction-settlement.js +9 -7
  14. package/dist/internal/adapters/transaction-settlement.js.map +1 -1
  15. package/dist/internal/client-lifecycle.d.ts.map +1 -1
  16. package/dist/internal/contract-normalization.d.ts.map +1 -1
  17. package/dist/internal/database-facade.d.ts +12 -12
  18. package/dist/internal/database-facade.d.ts.map +1 -1
  19. package/dist/internal/database-facade.js.map +1 -1
  20. package/dist/internal/database-factory.d.ts +2 -2
  21. package/dist/internal/database-factory.d.ts.map +1 -1
  22. package/dist/internal/database-factory.js +3 -3
  23. package/dist/internal/database-factory.js.map +1 -1
  24. package/dist/internal/dynamic.d.ts.map +1 -1
  25. package/dist/internal/dynamic.js +3 -1
  26. package/dist/internal/dynamic.js.map +1 -1
  27. package/dist/internal/executor.d.ts +6 -6
  28. package/dist/internal/executor.d.ts.map +1 -1
  29. package/dist/internal/promise.d.ts.map +1 -1
  30. package/dist/internal/query-execution.d.ts.map +1 -1
  31. package/dist/internal/recipe.d.ts.map +1 -1
  32. package/dist/internal/recipe.js +10 -10
  33. package/dist/internal/recipe.js.map +1 -1
  34. package/dist/internal/relation-plan.d.ts.map +1 -1
  35. package/dist/internal/relation-result.d.ts.map +1 -1
  36. package/dist/internal/relation-result.js +6 -2
  37. package/dist/internal/relation-result.js.map +1 -1
  38. package/dist/internal/relation-runtime.d.ts +1 -1
  39. package/dist/internal/relation-runtime.d.ts.map +1 -1
  40. package/dist/internal/relation-runtime.js +11 -6
  41. package/dist/internal/relation-runtime.js.map +1 -1
  42. package/dist/internal/relation-stream.d.ts +1 -1
  43. package/dist/internal/relation-stream.d.ts.map +1 -1
  44. package/dist/internal/relation-stream.js +9 -7
  45. package/dist/internal/relation-stream.js.map +1 -1
  46. package/dist/internal/sqlite-datetime.d.ts.map +1 -1
  47. package/dist/internal/sqlite-datetime.js +11 -9
  48. package/dist/internal/sqlite-datetime.js.map +1 -1
  49. package/dist/internal/sqlite-pragmas.d.ts.map +1 -1
  50. package/dist/internal/testing.d.ts +5 -5
  51. package/dist/internal/testing.d.ts.map +1 -1
  52. package/dist/internal/testing.js.map +1 -1
  53. package/dist/internal/transaction.d.ts +6 -6
  54. package/dist/internal/transaction.d.ts.map +1 -1
  55. package/dist/internal/transaction.js +5 -3
  56. package/dist/internal/transaction.js.map +1 -1
  57. package/dist/relation/include.d.ts +20 -20
  58. package/dist/relation/include.d.ts.map +1 -1
  59. package/dist/relation.d.ts +23 -23
  60. package/dist/relation.d.ts.map +1 -1
  61. package/dist/sqlite.d.ts +1 -1
  62. package/dist/sqlite.d.ts.map +1 -1
  63. package/dist/sqlite.js +8 -6
  64. package/dist/sqlite.js.map +1 -1
  65. package/dist/testing/transaction.d.ts +1 -1
  66. package/dist/testing/transaction.d.ts.map +1 -1
  67. package/dist/testing/transaction.js.map +1 -1
  68. package/dist/testing/types.d.ts +2 -3
  69. package/dist/testing/types.d.ts.map +1 -1
  70. package/dist/testing/vitest.d.ts +2 -1
  71. package/dist/testing/vitest.d.ts.map +1 -1
  72. package/dist/testing/vitest.js +1 -1
  73. package/dist/testing/vitest.js.map +1 -1
  74. package/docs/north-star.md +47 -0
  75. package/docs/roadmap.md +32 -0
  76. package/package.json +33 -40
  77. package/src/database.ts +30 -30
  78. package/src/databaseTypes.ts +65 -0
  79. package/src/internal/adapters/transaction-settlement.ts +9 -8
  80. package/src/internal/database-facade.ts +28 -28
  81. package/src/internal/database-factory.ts +15 -15
  82. package/src/internal/dynamic.ts +3 -1
  83. package/src/internal/executor.ts +6 -6
  84. package/src/internal/recipe.ts +10 -10
  85. package/src/internal/relation-result.ts +6 -3
  86. package/src/internal/relation-runtime.ts +25 -20
  87. package/src/internal/relation-stream.ts +5 -4
  88. package/src/internal/sqlite-datetime.ts +11 -9
  89. package/src/internal/testing.ts +8 -8
  90. package/src/internal/transaction.ts +16 -15
  91. package/src/relation/include.ts +48 -48
  92. package/src/relation.ts +38 -38
  93. package/src/sqlite.ts +9 -7
  94. package/src/testing/transaction.ts +1 -1
  95. package/src/testing/types.ts +2 -3
  96. package/src/testing/vitest.ts +4 -2
  97. package/dist/index.d.ts +0 -5
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.js +0 -4
  100. package/dist/index.js.map +0 -1
  101. package/dist/internal/database-types.d.ts +0 -33
  102. package/dist/internal/database-types.d.ts.map +0 -1
  103. package/dist/internal/database-types.js.map +0 -1
  104. package/dist/testing.d.ts +0 -4
  105. package/dist/testing.d.ts.map +0 -1
  106. package/dist/testing.js +0 -3
  107. package/dist/testing.js.map +0 -1
  108. package/src/index.ts +0 -17
  109. package/src/internal/database-types.ts +0 -65
  110. package/src/testing.ts +0 -10
package/dist/index.js DELETED
@@ -1,4 +0,0 @@
1
- export { all, and, not, or } from "@prisma-next/sql-orm-client";
2
- export { makeDatabase, } from "./database.js";
3
- export { PrismaConnectionFailure, PrismaError, PrismaQueryFailure, PrismaRuntimeFailure, } from "./error.js";
4
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAMN,YAAY,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,uBAAuB,EACvB,WAAW,EAEX,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,YAAY,CAAC"}
@@ -1,33 +0,0 @@
1
- import type { orm } from "@prisma-next/sql-orm-client";
2
- import type { Context, Effect, Layer } from "effect";
3
- import type { PrismaError } from "#error.ts";
4
- import type { Relation } from "#relation.ts";
5
- import type { AnySqlContract } from "./executor.ts";
6
- type OrmFor<Contract extends AnySqlContract> = ReturnType<typeof orm<Contract>>;
7
- type DefaultNamespaceId<Contract extends AnySqlContract> = "__unbound__" extends keyof OrmFor<Contract> ? "__unbound__" : "public" extends keyof OrmFor<Contract> ? "public" : keyof OrmFor<Contract>;
8
- export type DefaultModels<Contract extends AnySqlContract> = OrmFor<Contract>[DefaultNamespaceId<Contract>] extends infer Models extends object ? Models : never;
9
- type IsUnion<Value, Whole = Value> = Value extends unknown ? ([Whole] extends [Value] ? false : true) : never;
10
- type IsSingletonString<Value extends string> = Record<never, never> extends Record<Value, never> ? false : true;
11
- export declare const internalContextIdentifierPrefix = "\0@shivaedev/effect-prisma/internal/";
12
- export type DatabaseIdentifierLiteral<Identifier extends string> = [Identifier] extends [`\0@shivaedev/effect-prisma/internal/${string}`] ? never : string extends Identifier ? never : true extends IsUnion<Identifier> ? never : IsSingletonString<Identifier> extends true ? Identifier : never;
13
- export interface DatabaseIdentifier<Contract extends AnySqlContract, Identifier extends string> {
14
- readonly _contract: (contract: Contract) => Contract;
15
- readonly _databaseIdentifier: (identifier: Identifier) => Identifier;
16
- }
17
- type DatabaseModels<Contract extends AnySqlContract, Identifier extends string> = {
18
- readonly [Model in keyof DefaultModels<Contract>]: Relation<DefaultModels<Contract>[Model], Contract, Model & string, DatabaseIdentifier<Contract, Identifier>>;
19
- };
20
- export type DatabaseService<Contract extends AnySqlContract, Identifier extends string> = DatabaseModels<Contract, Identifier> & {
21
- transaction: <A, E, R>(program: Effect.Effect<A, E, R> & (DatabaseIdentifier<Contract, Identifier> extends R ? unknown : never)) => Effect.Effect<A, E | PrismaError, Exclude<R, DatabaseIdentifier<Contract, Identifier>>>;
22
- };
23
- export interface DatabaseServiceHolder<Contract extends AnySqlContract, Identifier extends string> extends Context.Service<DatabaseIdentifier<Contract, Identifier>, DatabaseService<Contract, Identifier>> {
24
- }
25
- export type AnyDatabase = Effect.Effect<unknown, never, unknown> & {
26
- readonly layer: (...arguments_: readonly never[]) => Layer.Any;
27
- };
28
- export type DatabaseServiceOf<Database extends AnyDatabase> = Effect.Success<Database>;
29
- export interface SqlDatabase<Contract extends AnySqlContract, Identifier extends string, Options> extends DatabaseServiceHolder<Contract, Identifier> {
30
- readonly layer: (options: Options) => Layer.Layer<DatabaseIdentifier<Contract, Identifier>, PrismaError>;
31
- }
32
- export {};
33
- //# sourceMappingURL=database-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../../src/internal/database-types.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-types.js","sourceRoot":"","sources":["../../src/internal/database-types.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,+BAA+B,GAAG,sCAAsC,CAAC"}
package/dist/testing.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export { withTestTransaction } from "#testing/transaction.ts";
2
- export type { AnyDatabase, DatabaseIt, DatabaseService, DatabaseTest, DatabaseTester, MakeDatabaseItOptions, } from "#testing/types.ts";
3
- export { makeDatabaseIt } from "#testing/vitest.ts";
4
- //# sourceMappingURL=testing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/testing.js DELETED
@@ -1,3 +0,0 @@
1
- export { withTestTransaction } from "#testing/transaction.ts";
2
- export { makeDatabaseIt } from "#testing/vitest.ts";
3
- //# sourceMappingURL=testing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAS9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
package/src/index.ts DELETED
@@ -1,17 +0,0 @@
1
- export { all, and, not, or } from "@prisma-next/sql-orm-client";
2
- export {
3
- type AnyDatabase,
4
- type DatabaseDefinition,
5
- type DatabaseLayerOptions,
6
- type DatabaseService,
7
- type DatabaseServiceOf,
8
- makeDatabase,
9
- } from "./database.ts";
10
- export {
11
- PrismaConnectionFailure,
12
- PrismaError,
13
- type PrismaErrorReason,
14
- PrismaQueryFailure,
15
- PrismaRuntimeFailure,
16
- } from "./error.ts";
17
- export type { Relation } from "./relation.ts";
@@ -1,65 +0,0 @@
1
- import type { orm } from "@prisma-next/sql-orm-client";
2
- import type { Context, Effect, Layer } from "effect";
3
- import type { PrismaError } from "#error.ts";
4
- import type { Relation } from "#relation.ts";
5
- import type { AnySqlContract } from "./executor.ts";
6
-
7
- type OrmFor<Contract extends AnySqlContract> = ReturnType<typeof orm<Contract>>;
8
- type DefaultNamespaceId<Contract extends AnySqlContract> = "__unbound__" extends keyof OrmFor<Contract>
9
- ? "__unbound__"
10
- : "public" extends keyof OrmFor<Contract>
11
- ? "public"
12
- : keyof OrmFor<Contract>;
13
- export type DefaultModels<Contract extends AnySqlContract> = OrmFor<Contract>[DefaultNamespaceId<Contract>] extends infer Models extends object
14
- ? Models
15
- : never;
16
-
17
- type IsUnion<Value, Whole = Value> = Value extends unknown ? ([Whole] extends [Value] ? false : true) : never;
18
-
19
- type IsSingletonString<Value extends string> = Record<never, never> extends Record<Value, never> ? false : true;
20
-
21
- export const internalContextIdentifierPrefix = "\0@shivaedev/effect-prisma/internal/";
22
-
23
- export type DatabaseIdentifierLiteral<Identifier extends string> = [Identifier] extends [`\0@shivaedev/effect-prisma/internal/${string}`]
24
- ? never
25
- : string extends Identifier
26
- ? never
27
- : true extends IsUnion<Identifier>
28
- ? never
29
- : IsSingletonString<Identifier> extends true
30
- ? Identifier
31
- : never;
32
-
33
- export interface DatabaseIdentifier<Contract extends AnySqlContract, Identifier extends string> {
34
- readonly _contract: (contract: Contract) => Contract;
35
- readonly _databaseIdentifier: (identifier: Identifier) => Identifier;
36
- }
37
-
38
- type DatabaseModels<Contract extends AnySqlContract, Identifier extends string> = {
39
- readonly [Model in keyof DefaultModels<Contract>]: Relation<
40
- DefaultModels<Contract>[Model],
41
- Contract,
42
- Model & string,
43
- DatabaseIdentifier<Contract, Identifier>
44
- >;
45
- };
46
-
47
- export type DatabaseService<Contract extends AnySqlContract, Identifier extends string> = DatabaseModels<Contract, Identifier> & {
48
- transaction: <A, E, R>(
49
- program: Effect.Effect<A, E, R> & (DatabaseIdentifier<Contract, Identifier> extends R ? unknown : never),
50
- ) => Effect.Effect<A, E | PrismaError, Exclude<R, DatabaseIdentifier<Contract, Identifier>>>;
51
- };
52
-
53
- export interface DatabaseServiceHolder<Contract extends AnySqlContract, Identifier extends string>
54
- extends Context.Service<DatabaseIdentifier<Contract, Identifier>, DatabaseService<Contract, Identifier>> {}
55
-
56
- export type AnyDatabase = Effect.Effect<unknown, never, unknown> & {
57
- readonly layer: (...arguments_: readonly never[]) => Layer.Any;
58
- };
59
-
60
- export type DatabaseServiceOf<Database extends AnyDatabase> = Effect.Success<Database>;
61
-
62
- export interface SqlDatabase<Contract extends AnySqlContract, Identifier extends string, Options>
63
- extends DatabaseServiceHolder<Contract, Identifier> {
64
- readonly layer: (options: Options) => Layer.Layer<DatabaseIdentifier<Contract, Identifier>, PrismaError>;
65
- }
package/src/testing.ts DELETED
@@ -1,10 +0,0 @@
1
- export { withTestTransaction } from "#testing/transaction.ts";
2
- export type {
3
- AnyDatabase,
4
- DatabaseIt,
5
- DatabaseService,
6
- DatabaseTest,
7
- DatabaseTester,
8
- MakeDatabaseItOptions,
9
- } from "#testing/types.ts";
10
- export { makeDatabaseIt } from "#testing/vitest.ts";