@shivaedev/effect-prisma 0.6.3 → 0.7.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 (138) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/dist/bin/normalize-contract.js +1 -0
  3. package/dist/bin/normalize-contract.js.map +1 -1
  4. package/dist/database.d.ts +4 -4
  5. package/dist/database.d.ts.map +1 -1
  6. package/dist/database.js +12 -12
  7. package/dist/database.js.map +1 -1
  8. package/dist/error.d.ts +5 -5
  9. package/dist/error.d.ts.map +1 -1
  10. package/dist/error.js +5 -6
  11. package/dist/error.js.map +1 -1
  12. package/dist/index.d.ts +3 -3
  13. package/dist/internal/adapters/transaction-settlement.d.ts +10 -0
  14. package/dist/internal/adapters/transaction-settlement.d.ts.map +1 -0
  15. package/dist/internal/adapters/transaction-settlement.js +56 -0
  16. package/dist/internal/adapters/transaction-settlement.js.map +1 -0
  17. package/dist/internal/client-lifecycle.d.ts +2 -2
  18. package/dist/internal/client-lifecycle.d.ts.map +1 -1
  19. package/dist/internal/client-lifecycle.js.map +1 -1
  20. package/dist/internal/contract-normalization.d.ts +0 -4
  21. package/dist/internal/contract-normalization.d.ts.map +1 -1
  22. package/dist/internal/contract-normalization.js +5 -10
  23. package/dist/internal/contract-normalization.js.map +1 -1
  24. package/dist/internal/database-facade.d.ts +19 -0
  25. package/dist/internal/database-facade.d.ts.map +1 -0
  26. package/dist/internal/database-facade.js +79 -0
  27. package/dist/internal/database-facade.js.map +1 -0
  28. package/dist/internal/database-factory.d.ts +4 -48
  29. package/dist/internal/database-factory.d.ts.map +1 -1
  30. package/dist/internal/database-factory.js +11 -90
  31. package/dist/internal/database-factory.js.map +1 -1
  32. package/dist/internal/database-types.d.ts +33 -0
  33. package/dist/internal/database-types.d.ts.map +1 -0
  34. package/dist/internal/database-types.js +2 -0
  35. package/dist/internal/database-types.js.map +1 -0
  36. package/dist/internal/dynamic.d.ts +5 -0
  37. package/dist/internal/dynamic.d.ts.map +1 -0
  38. package/dist/internal/dynamic.js +12 -0
  39. package/dist/internal/dynamic.js.map +1 -0
  40. package/dist/internal/executor.d.ts +3 -7
  41. package/dist/internal/executor.d.ts.map +1 -1
  42. package/dist/internal/promise.d.ts +1 -1
  43. package/dist/internal/promise.d.ts.map +1 -1
  44. package/dist/internal/promise.js +2 -4
  45. package/dist/internal/promise.js.map +1 -1
  46. package/dist/internal/query-execution.d.ts +2 -2
  47. package/dist/internal/query-execution.d.ts.map +1 -1
  48. package/dist/internal/query-execution.js +2 -6
  49. package/dist/internal/query-execution.js.map +1 -1
  50. package/dist/internal/recipe.d.ts +3 -3
  51. package/dist/internal/recipe.d.ts.map +1 -1
  52. package/dist/internal/recipe.js +9 -20
  53. package/dist/internal/recipe.js.map +1 -1
  54. package/dist/internal/relation-plan.d.ts +1 -1
  55. package/dist/internal/relation-result.d.ts +4 -0
  56. package/dist/internal/relation-result.d.ts.map +1 -0
  57. package/dist/internal/relation-result.js +19 -0
  58. package/dist/internal/relation-result.js.map +1 -0
  59. package/dist/internal/relation-runtime.d.ts +3 -3
  60. package/dist/internal/relation-runtime.d.ts.map +1 -1
  61. package/dist/internal/relation-runtime.js +12 -37
  62. package/dist/internal/relation-runtime.js.map +1 -1
  63. package/dist/internal/relation-stream.d.ts +3 -3
  64. package/dist/internal/relation-stream.d.ts.map +1 -1
  65. package/dist/internal/relation-stream.js +20 -24
  66. package/dist/internal/relation-stream.js.map +1 -1
  67. package/dist/internal/sqlite-datetime.d.ts +1 -27
  68. package/dist/internal/sqlite-datetime.d.ts.map +1 -1
  69. package/dist/internal/sqlite-datetime.js +16 -35
  70. package/dist/internal/sqlite-datetime.js.map +1 -1
  71. package/dist/internal/sqlite-pragmas.d.ts +1 -13
  72. package/dist/internal/sqlite-pragmas.d.ts.map +1 -1
  73. package/dist/internal/sqlite-pragmas.js +2 -12
  74. package/dist/internal/sqlite-pragmas.js.map +1 -1
  75. package/dist/internal/testing.d.ts +1 -1
  76. package/dist/internal/testing.d.ts.map +1 -1
  77. package/dist/internal/testing.js +5 -2
  78. package/dist/internal/testing.js.map +1 -1
  79. package/dist/internal/transaction.d.ts +5 -5
  80. package/dist/internal/transaction.d.ts.map +1 -1
  81. package/dist/internal/transaction.js +5 -53
  82. package/dist/internal/transaction.js.map +1 -1
  83. package/dist/relation/include-metadata.d.ts +1 -1
  84. package/dist/relation/include-metadata.d.ts.map +1 -1
  85. package/dist/relation/include.d.ts +8 -5
  86. package/dist/relation/include.d.ts.map +1 -1
  87. package/dist/relation/prisma-methods.d.ts +17 -17
  88. package/dist/relation/prisma-methods.d.ts.map +1 -1
  89. package/dist/relation.d.ts +4 -4
  90. package/dist/relation.d.ts.map +1 -1
  91. package/dist/sqlite.d.ts +5 -10
  92. package/dist/sqlite.d.ts.map +1 -1
  93. package/dist/sqlite.js +14 -12
  94. package/dist/sqlite.js.map +1 -1
  95. package/dist/testing/transaction.d.ts +6 -7
  96. package/dist/testing/transaction.d.ts.map +1 -1
  97. package/dist/testing/transaction.js +2 -2
  98. package/dist/testing/transaction.js.map +1 -1
  99. package/dist/testing/types.d.ts +7 -7
  100. package/dist/testing/types.d.ts.map +1 -1
  101. package/dist/testing/vitest.d.ts +3 -3
  102. package/dist/testing/vitest.d.ts.map +1 -1
  103. package/dist/testing/vitest.js +2 -2
  104. package/dist/testing/vitest.js.map +1 -1
  105. package/dist/testing.d.ts +3 -3
  106. package/package.json +35 -37
  107. package/src/bin/normalize-contract.ts +2 -1
  108. package/src/database.ts +49 -67
  109. package/src/error.ts +13 -23
  110. package/src/index.ts +3 -3
  111. package/src/internal/adapters/transaction-settlement.ts +70 -0
  112. package/src/internal/client-lifecycle.ts +4 -11
  113. package/src/internal/contract-normalization.ts +6 -14
  114. package/src/internal/database-facade.ts +138 -0
  115. package/src/internal/database-factory.ts +34 -306
  116. package/src/internal/database-types.ts +65 -0
  117. package/src/internal/dynamic.ts +16 -0
  118. package/src/internal/executor.ts +4 -11
  119. package/src/internal/promise.ts +4 -12
  120. package/src/internal/query-execution.ts +4 -8
  121. package/src/internal/recipe.ts +24 -89
  122. package/src/internal/relation-plan.ts +1 -1
  123. package/src/internal/relation-result.ts +27 -0
  124. package/src/internal/relation-runtime.ts +45 -135
  125. package/src/internal/relation-stream.ts +24 -51
  126. package/src/internal/sqlite-datetime.ts +20 -54
  127. package/src/internal/sqlite-pragmas.ts +3 -16
  128. package/src/internal/testing.ts +13 -15
  129. package/src/internal/transaction.ts +16 -109
  130. package/src/relation/include-metadata.ts +11 -43
  131. package/src/relation/include.ts +46 -140
  132. package/src/relation/prisma-methods.ts +36 -122
  133. package/src/relation.ts +20 -48
  134. package/src/sqlite.ts +59 -85
  135. package/src/testing/transaction.ts +20 -33
  136. package/src/testing/types.ts +15 -34
  137. package/src/testing/vitest.ts +14 -28
  138. package/src/testing.ts +3 -3
@@ -1,111 +1,32 @@
1
1
  import { Context, Effect, Layer } from "effect";
2
- import { toPrismaError } from "../error.js";
3
- import { assertAvailableModelNames } from "./client-lifecycle.js";
4
- import { makeModelRelation } from "./relation-runtime.js";
2
+ import { makeFacade, runTransaction } from "./database-facade.js";
3
+ import { internalContextIdentifierPrefix, } from "./database-types.js";
5
4
  import { DatabaseTestingTypeId } from "./testing.js";
6
- import { acquireTransaction, releaseTestTransaction, releaseTransaction, withTransactionSemaphore, } from "./transaction.js";
7
- const internalContextIdentifierPrefix = "\0@shivaedev/effect-prisma/internal/";
5
+ import { releaseTestTransaction } from "./transaction.js";
8
6
  let activeTransactionReferenceSequence = 0;
9
- /**
10
- * Resolve the models of the single domain namespace from a namespaced ORM
11
- * client. Prisma Next namespaces PostgreSQL models under their schema and
12
- * SQLite models under the unbound namespace.
13
- */
14
- export const namespaceModels = (contract, namespacedOrm) => {
15
- const namespaces = Object.keys(contract.domain.namespaces);
16
- if (namespaces.length !== 1 || namespaces[0] === undefined) {
17
- throw new TypeError("Effect Prisma currently requires exactly one domain namespace");
18
- }
19
- assertAvailableModelNames(Object.keys(contract.domain.namespaces[namespaces[0]].models));
20
- return Reflect.get(namespacedOrm, namespaces[0]);
21
- };
22
- /**
23
- * Assemble the database service and its Layer around a driver-specific
24
- * executor acquisition.
25
- */
26
7
  export const makeSqlDatabase = (identifier, acquireExecutor) => {
27
8
  if (identifier.startsWith(internalContextIdentifierPrefix)) {
28
9
  throw new TypeError("Database identifier uses a reserved internal namespace");
29
10
  }
30
11
  const Service = Context.Service(identifier);
31
- const executors = new WeakMap();
32
- const ActiveTransaction = Context.Reference(`${internalContextIdentifierPrefix}ActiveTransaction/${activeTransactionReferenceSequence++}`, { defaultValue: () => undefined });
12
+ const scope = {
13
+ activeTransaction: Context.Reference(`${internalContextIdentifierPrefix}ActiveTransaction/${activeTransactionReferenceSequence++}`, { defaultValue: () => undefined }),
14
+ executors: new WeakMap(),
15
+ service: Service,
16
+ };
33
17
  const executorOf = (facade) => {
34
- const executor = executors.get(facade);
18
+ const executor = scope.executors.get(facade);
35
19
  return executor === undefined
36
20
  ? Effect.die(new TypeError("The database service was not created by its database Layer"))
37
21
  : Effect.succeed(executor);
38
22
  };
39
- const runTransaction = (current, currentFacade, program, release, mode, span) => {
40
- if (!current.liveness.open) {
41
- return Effect.fail(toPrismaError({ code: current.liveness.closedCode }));
42
- }
43
- if (current.mode === "test" ||
44
- (current.mode === "transaction" && mode === "transaction")) {
45
- return Effect.provideService(program, Service, currentFacade);
46
- }
47
- if (current.mode === "transaction") {
48
- return Effect.fail(toPrismaError({
49
- code: "RUNTIME.TEST_TRANSACTION_INSIDE_TRANSACTION_UNSUPPORTED",
50
- }));
51
- }
52
- const transaction = Effect.acquireUseRelease(acquireTransaction(current, (transactionOrm) => namespaceModels(current.client.contract, transactionOrm), mode), (resource) => {
53
- const transactionFacade = makeFacade(resource.executor);
54
- return program.pipe(Effect.provideService(Service, transactionFacade), Effect.provideService(ActiveTransaction, {
55
- executor: resource.executor,
56
- facade: transactionFacade,
57
- }));
58
- }, release).pipe(Effect.withSpan(span, { kind: "client" }));
59
- return withTransactionSemaphore(current.transactionSemaphore, transaction);
60
- };
61
- function makeFacade(current) {
62
- let facade;
63
- const resolveActiveTransaction = Effect.flatMap(ActiveTransaction, (active) => {
64
- if (current.mode === "root") {
65
- return Effect.succeed(active ?? { executor: current, facade });
66
- }
67
- return active?.executor === current
68
- ? Effect.succeed(active)
69
- : Effect.fail(toPrismaError({
70
- code: "RUNTIME.TRANSACTION_CONTEXT_MISMATCH",
71
- }));
72
- });
73
- const resolveExecutor = Effect.suspend(() => current.liveness.open
74
- ? Effect.map(resolveActiveTransaction, ({ executor }) => executor)
75
- : Effect.succeed(current));
76
- const target = Object.assign(Object.create(null), {
77
- transaction: (program) => Effect.suspend(() => {
78
- if (!current.liveness.open) {
79
- return Effect.fail(toPrismaError({ code: current.liveness.closedCode }));
80
- }
81
- return Effect.flatMap(resolveActiveTransaction, (selected) => {
82
- return runTransaction(selected.executor, selected.facade, program, releaseTransaction, "transaction", "prisma.transaction");
83
- });
84
- }),
85
- });
86
- facade = new Proxy(target, {
87
- get(target, property, receiver) {
88
- if (Reflect.has(target, property)) {
89
- return Reflect.get(target, property, receiver);
90
- }
91
- if (typeof property !== "string") {
92
- return undefined;
93
- }
94
- return makeModelRelation(current, property, resolveExecutor);
95
- },
96
- });
97
- executors.set(facade, current);
98
- return facade;
99
- }
100
- const withTestTransaction = (program) => Effect.flatMap(Service, (facade) => {
101
- return Effect.flatMap(executorOf(facade), (current) => runTransaction(current, facade, program, releaseTestTransaction, "test", "prisma.testTransaction"));
102
- });
23
+ const withTestTransaction = (program) => Effect.flatMap(Service, (facade) => Effect.flatMap(executorOf(facade), (current) => runTransaction(scope, current, facade, program, releaseTestTransaction, "test", "prisma.testTransaction")));
103
24
  const layer = (layerOptions) => {
104
25
  const acquire = Effect.acquireRelease(Effect.suspend(() => acquireExecutor(layerOptions)), (executor) => {
105
26
  executor.liveness.open = false;
106
27
  return Effect.promise(() => executor.client.close()).pipe(Effect.orDie);
107
28
  });
108
- return Layer.effect(Service)(Effect.map(acquire, makeFacade));
29
+ return Layer.effect(Service)(Effect.map(acquire, (executor) => makeFacade(scope, executor)));
109
30
  };
110
31
  return Object.assign(Service, {
111
32
  layer,
@@ -1 +1 @@
1
- {"version":3,"file":"database-factory.js","sourceRoot":"","sources":["../../src/internal/database-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-factory.js","sourceRoot":"","sources":["../../src/internal/database-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAA4C,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAKN,+BAA+B,GAE/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,IAAI,kCAAkC,GAAG,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,UAAiD,EACjD,eAAsH,EACzE,EAAE;IAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IAID,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAoD,UAAU,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAsC;QAChD,iBAAiB,EAAE,OAAO,CAAC,SAAS,CACnC,GAAG,+BAA+B,qBAAqB,kCAAkC,EAAE,EAAE,EAC7F,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CACjC;QACD,SAAS,EAAE,IAAI,OAAO,EAAE;QACxB,OAAO,EAAE,OAAO;KAChB,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,MAA6C,EAAqD,EAAE;QACvH,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,QAAQ,KAAK,SAAS;YAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAC;YACzF,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAC3B,OAA0E,EACD,EAAE,CAC3E,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAC9C,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,wBAAwB,CAAC,CACzG,CACD,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,YAAqB,EAAwC,EAAE;QAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CACpC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EACnD,CAAC,QAAQ,EAAE,EAAE;YACZ,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC,CACD,CAAC;QAEF,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC7B,KAAK;QACL,CAAC,qBAAqB,CAAC,EAAE,EAAE,mBAAmB,EAAE;KAChD,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,33 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../../src/internal/database-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,KAAK,MAAM,CAAC,QAAQ,SAAS,cAAc,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,KAAK,kBAAkB,CAAC,QAAQ,SAAS,cAAc,IAAI,aAAa,SAAS,MAAM,MAAM,CAAC,QAAQ,CAAC,GACpG,aAAa,GACb,QAAQ,SAAS,MAAM,MAAM,CAAC,QAAQ,CAAC,GACtC,QAAQ,GACR,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,MAAM,SAAS,MAAM,GAC5I,MAAM,GACN,KAAK,CAAC;AAET,KAAK,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,SAAS,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;AAE9G,KAAK,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAEhH,eAAO,MAAM,+BAA+B,yCAAyC,CAAC;AAEtF,MAAM,MAAM,yBAAyB,CAAC,UAAU,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,uCAAuC,MAAM,EAAE,CAAC,GACtI,KAAK,GACL,MAAM,SAAS,UAAU,GACxB,KAAK,GACL,IAAI,SAAS,OAAO,CAAC,UAAU,CAAC,GAC/B,KAAK,GACL,iBAAiB,CAAC,UAAU,CAAC,SAAS,IAAI,GACzC,UAAU,GACV,KAAK,CAAC;AAEZ,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM;IAC7F,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAC;IACrD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,CAAC;CACrE;AAED,KAAK,cAAc,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,IAAI;IACjF,QAAQ,EAAE,KAAK,IAAI,MAAM,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAC1D,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAC9B,QAAQ,EACR,KAAK,GAAG,MAAM,EACd,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CACxC;CACD,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG;IAChI,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,KACpG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC7F,CAAC;AAEF,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,CAChG,SAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CAAG;AAE5G,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG;IAClE,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,SAAS,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvF,MAAM,WAAW,WAAW,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,EAAE,OAAO,CAC/F,SAAQ,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;CACzG"}
@@ -0,0 +1,2 @@
1
+ export const internalContextIdentifierPrefix = "\0@shivaedev/effect-prisma/internal/";
2
+ //# sourceMappingURL=database-types.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,5 @@
1
+ export declare const hasMethod: (value: unknown, name: PropertyKey) => value is object;
2
+ export declare const invokeMethod: (target: object, name: PropertyKey, arguments_: readonly unknown[]) => unknown;
3
+ export declare const isPromiseLike: (value: unknown) => value is PromiseLike<unknown>;
4
+ export declare const isAsyncIterable: (value: unknown) => value is AsyncIterable<unknown>;
5
+ //# sourceMappingURL=dynamic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../../src/internal/dynamic.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,EAAE,MAAM,WAAW,KAAG,KAAK,IAAI,MACD,CAAC;AAEvE,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,MAAM,WAAW,EAAE,YAAY,SAAS,OAAO,EAAE,KAAG,OAMhG,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAA6B,CAAC;AAEzG,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAA2C,CAAC"}
@@ -0,0 +1,12 @@
1
+ const isObjectLike = (value) => (typeof value === "object" && value !== null) || typeof value === "function";
2
+ export const hasMethod = (value, name) => isObjectLike(value) && typeof Reflect.get(value, name) === "function";
3
+ export const invokeMethod = (target, name, arguments_) => {
4
+ const method = Reflect.get(target, name);
5
+ if (typeof method !== "function") {
6
+ throw new TypeError(`${String(name)} is not a method`);
7
+ }
8
+ return Reflect.apply(method, target, arguments_);
9
+ };
10
+ export const isPromiseLike = (value) => hasMethod(value, "then");
11
+ export const isAsyncIterable = (value) => hasMethod(value, Symbol.asyncIterator);
12
+ //# sourceMappingURL=dynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../src/internal/dynamic.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;AAEvI,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,IAAiB,EAAmB,EAAE,CAC/E,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,UAAU,CAAC;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,IAAiB,EAAE,UAA8B,EAAW,EAAE;IAC1G,MAAM,MAAM,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAiC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEzG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAmC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC"}
@@ -4,15 +4,11 @@ import type { ExecutionContext, Runtime } from "@prisma-next/sql-runtime";
4
4
  import type { Semaphore } from "effect";
5
5
  export type AnySqlContract = PrismaContract<SqlStorage>;
6
6
  export type AnyPostgresContract = AnySqlContract;
7
- /**
8
- * The subset of a Prisma Next client the package depends on. Both the
9
- * PostgreSQL and the SQLite client satisfy it.
10
- */
11
7
  export interface SqlDatabaseClient<Contract extends AnySqlContract> {
12
- readonly contract: Contract;
8
+ close: () => Promise<void>;
13
9
  readonly context: ExecutionContext<Contract>;
14
- runtime(): Runtime;
15
- close(): Promise<void>;
10
+ readonly contract: Contract;
11
+ runtime: () => Runtime;
16
12
  }
17
13
  export interface DatabaseExecutor<Models extends object, Contract extends AnySqlContract = AnySqlContract> {
18
14
  readonly client: SqlDatabaseClient<Contract>;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/internal/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,cAAc;IACjE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAChC,MAAM,SAAS,MAAM,EACrB,QAAQ,SAAS,cAAc,GAAG,cAAc;IAEhD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC;KACd,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;CAC/D"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/internal/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,cAAc;IACjE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAAC,MAAM,SAAS,MAAM,EAAE,QAAQ,SAAS,cAAc,GAAG,cAAc;IACxG,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE;QAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC;KACd,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;CAC/D"}
@@ -1,4 +1,4 @@
1
1
  import { Effect } from "effect";
2
- import { type PrismaError } from "../error.js";
2
+ import { type PrismaError } from "../error.ts";
3
3
  export declare const fromPrismaPromise: <A>(evaluate: (signal: AbortSignal) => PromiseLike<A>) => Effect.Effect<A, PrismaError>;
4
4
  //# sourceMappingURL=promise.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAmB,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAE/E,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAClC,UAAU,CAAC,MAAM,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,KAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAU7B,CAAC"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAmB,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAE/E,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAIF,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import { Effect } from "effect";
2
2
  import { isPrismaFailure, toPrismaError } from "../error.js";
3
3
  export const fromPrismaPromise = (evaluate) => Effect.tryPromise({
4
- try: (signal) => Promise.resolve(evaluate(signal)),
5
4
  catch: (error) => error,
6
- }).pipe(Effect.catch((error) => isPrismaFailure(error)
7
- ? Effect.fail(toPrismaError(error))
8
- : Effect.die(error)));
5
+ try: (signal) => Promise.resolve(evaluate(signal)),
6
+ }).pipe(Effect.catch((error) => (isPrismaFailure(error) ? Effect.fail(toPrismaError(error)) : Effect.die(error))));
9
7
  //# sourceMappingURL=promise.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,QAAiD,EACjB,EAAE,CAClC,MAAM,CAAC,UAAU,CAAC;IACjB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;CACvB,CAAC,CAAC,IAAI,CACN,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACtB,eAAe,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CACpB,CACD,CAAC"}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/internal/promise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,QAAiD,EAAiC,EAAE,CACxH,MAAM,CAAC,UAAU,CAAC;IACjB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACvB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Effect } from "effect";
2
- import { type PrismaError } from "../error.js";
3
- import type { DatabaseExecutor } from "./executor.js";
2
+ import { type PrismaError } from "../error.ts";
3
+ import type { DatabaseExecutor } from "./executor.ts";
4
4
  export declare const executeQuery: <A, E, R>(executor: Pick<DatabaseExecutor<object>, "liveness" | "querySemaphore">, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | PrismaError, R>;
5
5
  //# sourceMappingURL=query-execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-execution.d.ts","sourceRoot":"","sources":["../../src/internal/query-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,UAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC,EACvE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,CAUrC,CAAC"}
1
+ {"version":3,"file":"query-execution.d.ts","sourceRoot":"","sources":["../../src/internal/query-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,UAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC,EACvE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,CAMrC,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import { Effect } from "effect";
2
2
  import { toPrismaError } from "../error.js";
3
3
  export const executeQuery = (executor, effect) => {
4
- const checked = Effect.suspend(() => executor.liveness.open
5
- ? effect
6
- : Effect.fail(toPrismaError({ code: executor.liveness.closedCode })));
7
- return executor.querySemaphore === undefined
8
- ? checked
9
- : executor.querySemaphore.withPermit(Effect.uninterruptible(checked));
4
+ const checked = Effect.suspend(() => executor.liveness.open ? effect : Effect.fail(toPrismaError({ code: executor.liveness.closedCode })));
5
+ return executor.querySemaphore === undefined ? checked : executor.querySemaphore.withPermit(Effect.uninterruptible(checked));
10
6
  };
11
7
  //# sourceMappingURL=query-execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-execution.js","sourceRoot":"","sources":["../../src/internal/query-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,QAAuE,EACvE,MAA8B,EACS,EAAE;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC7B,GAAyC,EAAE,CAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI;QACrB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CACtE,CAAC;IACF,OAAO,QAAQ,CAAC,cAAc,KAAK,SAAS;QAC3C,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC"}
1
+ {"version":3,"file":"query-execution.js","sourceRoot":"","sources":["../../src/internal/query-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,QAAuE,EACvE,MAA8B,EACS,EAAE;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC7B,GAAyC,EAAE,CAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CACrG,CAAC;IACF,OAAO,QAAQ,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9H,CAAC,CAAC"}
@@ -1,13 +1,13 @@
1
1
  export interface RelationOperation {
2
+ readonly arguments: readonly unknown[];
2
3
  readonly name: PropertyKey;
3
- readonly arguments: ReadonlyArray<unknown>;
4
4
  }
5
5
  export interface RelationRecipe {
6
6
  readonly model: string;
7
- readonly parent?: RelationRecipe;
8
7
  readonly operation?: RelationOperation;
8
+ readonly parent?: RelationRecipe;
9
9
  }
10
10
  export declare const rootRecipe: (model: string) => RelationRecipe;
11
- export declare const appendOperation: (parent: RelationRecipe, name: PropertyKey, arguments_: ReadonlyArray<unknown>) => RelationRecipe;
11
+ export declare const appendOperation: (parent: RelationRecipe, name: PropertyKey, arguments_: readonly unknown[]) => RelationRecipe;
12
12
  export declare const replayRecipe: (models: object, recipe: RelationRecipe, owner: object, transactionIdentity: object | undefined) => unknown;
13
13
  //# sourceMappingURL=recipe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,cAA6B,CAAC;AAEzE,eAAO,MAAM,eAAe,GAC3B,QAAQ,cAAc,EACtB,MAAM,WAAW,EACjB,YAAY,aAAa,CAAC,OAAO,CAAC,KAChC,cAOD,CAAC;AAmJH,eAAO,MAAM,YAAY,GACxB,QAAQ,MAAM,EACd,QAAQ,cAAc,EACtB,OAAO,MAAM,EACb,qBAAqB,MAAM,GAAG,SAAS,KACrC,OAQF,CAAC"}
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,cAA6B,CAAC;AAEzE,eAAO,MAAM,eAAe,GAAI,QAAQ,cAAc,EAAE,MAAM,WAAW,EAAE,YAAY,SAAS,OAAO,EAAE,KAAG,cAO1G,CAAC;AA0FH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,QAAQ,cAAc,EAAE,OAAO,MAAM,EAAE,qBAAqB,MAAM,GAAG,SAAS,KAAG,OAQ7H,CAAC"}
@@ -1,12 +1,13 @@
1
+ import { hasMethod, invokeMethod } from "./dynamic.js";
1
2
  import { getRelationPlan } from "./relation-plan.js";
2
3
  export const rootRecipe = (model) => ({ model });
3
4
  export const appendOperation = (parent, name, arguments_) => ({
4
5
  model: parent.model,
5
- parent,
6
6
  operation: {
7
- name,
8
7
  arguments: arguments_,
8
+ name,
9
9
  },
10
+ parent,
10
11
  });
11
12
  const operations = (recipe) => {
12
13
  const reversed = [];
@@ -20,13 +21,10 @@ const operations = (recipe) => {
20
21
  return reversed.reverse();
21
22
  };
22
23
  const applyMethod = (current, name, arguments_, model) => {
23
- if (typeof current !== "object" ||
24
- current === null ||
25
- typeof Reflect.get(current, name) !== "function") {
24
+ if (!hasMethod(current, name)) {
26
25
  throw new TypeError(`Cannot call ${String(name)} while replaying ${model}`);
27
26
  }
28
- const method = Reflect.get(current, name);
29
- return Reflect.apply(method, current, arguments_);
27
+ return invokeMethod(current, name, arguments_);
30
28
  };
31
29
  const replayPlan = (collection, plan, owner, transactionIdentity) => {
32
30
  if (!plan.liveness.open) {
@@ -35,13 +33,10 @@ const replayPlan = (collection, plan, owner, transactionIdentity) => {
35
33
  if (plan.owner !== owner) {
36
34
  throw new TypeError("Included Relations must use the same Database");
37
35
  }
38
- if (plan.transactionIdentity !== undefined &&
39
- plan.transactionIdentity !== transactionIdentity) {
36
+ if (plan.transactionIdentity !== undefined && plan.transactionIdentity !== transactionIdentity) {
40
37
  throw new TypeError("Included Relation belongs to another transaction");
41
38
  }
42
- const relatedModel = typeof collection === "object" && collection !== null
43
- ? Reflect.get(collection, "modelName")
44
- : undefined;
39
+ const relatedModel = typeof collection === "object" && collection !== null ? Reflect.get(collection, "modelName") : undefined;
45
40
  if (typeof relatedModel === "string" && relatedModel !== plan.recipe.model) {
46
41
  throw new TypeError(`Included relation expects ${relatedModel}, received ${plan.recipe.model}`);
47
42
  }
@@ -75,10 +70,7 @@ const includeRefinement = (value, owner, transactionIdentity) => {
75
70
  throw new TypeError("Included queries must use the same related model");
76
71
  }
77
72
  return (collection) => {
78
- const branches = Object.fromEntries(plans.map(([name, queryPlan]) => [
79
- name,
80
- replayPlan(collection, queryPlan, owner, transactionIdentity),
81
- ]));
73
+ const branches = Object.fromEntries(plans.map(([name, queryPlan]) => [name, replayPlan(collection, queryPlan, owner, transactionIdentity)]));
82
74
  return applyMethod(collection, "combine", [branches], model ?? "relation");
83
75
  };
84
76
  };
@@ -86,10 +78,7 @@ const replayRecipeFrom = (root, recipe, owner, transactionIdentity) => {
86
78
  let current = root;
87
79
  for (const operation of operations(recipe)) {
88
80
  const arguments_ = operation.name === "include" && operation.arguments.length === 2
89
- ? [
90
- operation.arguments[0],
91
- includeRefinement(operation.arguments[1], owner, transactionIdentity),
92
- ]
81
+ ? [operation.arguments[0], includeRefinement(operation.arguments[1], owner, transactionIdentity)]
93
82
  : operation.arguments;
94
83
  current = applyMethod(current, operation.name, arguments_, recipe.model);
95
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/internal/recipe.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { RelationRecipe } from "./recipe.js";
1
+ import type { RelationRecipe } from "./recipe.ts";
2
2
  export interface RelationPlan {
3
3
  readonly liveness: {
4
4
  readonly open: boolean;
@@ -0,0 +1,4 @@
1
+ import { Effect } from "effect";
2
+ import type { PrismaError } from "../error.ts";
3
+ export declare const evaluateResult: (value: unknown, terminal: PropertyKey | undefined) => Effect.Effect<unknown, PrismaError>;
4
+ //# sourceMappingURL=relation-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-result.d.ts","sourceRoot":"","sources":["../../src/internal/relation-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,EAAE,UAAU,WAAW,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAgBpH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Effect, Option } from "effect";
2
+ import { hasMethod, invokeMethod, isPromiseLike } from "./dynamic.js";
3
+ import { fromPrismaPromise } from "./promise.js";
4
+ const settle = (value, map) => isPromiseLike(value) ? fromPrismaPromise(() => value).pipe(Effect.map(map)) : Effect.succeed(map(value));
5
+ const countOf = (result) => (typeof result === "object" && result !== null ? Reflect.get(result, "count") : undefined);
6
+ export const evaluateResult = (value, terminal) => {
7
+ if (terminal === "count" && hasMethod(value, "aggregate")) {
8
+ return settle(invokeMethod(value, "aggregate", [(summary) => ({ count: summary.count() })]), countOf);
9
+ }
10
+ if (terminal === "exists" && hasMethod(value, "first")) {
11
+ return settle(invokeMethod(value, "first", []), (result) => result !== null);
12
+ }
13
+ const executable = hasMethod(value, "all") ? invokeMethod(value, "all", []) : value;
14
+ if (isPromiseLike(executable)) {
15
+ return settle(executable, (result) => (terminal === "first" ? Option.fromNullishOr(result) : result));
16
+ }
17
+ return Effect.succeed(executable);
18
+ };
19
+ //# sourceMappingURL=relation-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-result.js","sourceRoot":"","sources":["../../src/internal/relation-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,GAAiC,EAAuC,EAAE,CACzG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAE1G,MAAM,OAAO,GAAG,CAAC,MAAe,EAAW,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEzI,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,QAAiC,EAAuC,EAAE;IACxH,IAAI,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,OAAiC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACjI,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpF,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Effect } from "effect";
2
- import type { PrismaError } from "../error.js";
3
- import type { Relation } from "../relation.js";
4
- import type { AnyPostgresContract, DatabaseExecutor } from "./executor.js";
2
+ import type { PrismaError } from "../error.ts";
3
+ import type { Relation } from "../relation.ts";
4
+ import type { AnyPostgresContract, DatabaseExecutor } from "./executor.ts";
5
5
  export declare const makeModelRelation: <Collection, Models extends object, ExecutorContract extends AnyPostgresContract = AnyPostgresContract, Model extends string = string>(executor: DatabaseExecutor<Models, ExecutorContract>, model: Model, resolveExecutor?: Effect.Effect<DatabaseExecutor<Models, ExecutorContract>, PrismaError>) => Relation<Collection, undefined, Model>;
6
6
  //# sourceMappingURL=relation-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation-runtime.d.ts","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,QAAQ,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA6M3E,eAAO,MAAM,iBAAiB,GAC7B,UAAU,EACV,MAAM,SAAS,MAAM,EACrB,gBAAgB,SAAS,mBAAmB,GAAG,mBAAmB,EAClE,KAAK,SAAS,MAAM,GAAG,MAAM,EAE7B,UAAU,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,OAAO,KAAK,EACZ,kBAAiB,MAAM,CAAC,MAAM,CAC7B,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,WAAW,CACgB,KAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAKK,CAAC"}
1
+ {"version":3,"file":"relation-runtime.d.ts","sourceRoot":"","sources":["../../src/internal/relation-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAoH3E,eAAO,MAAM,iBAAiB,GAC7B,UAAU,EACV,MAAM,SAAS,MAAM,EACrB,gBAAgB,SAAS,mBAAmB,GAAG,mBAAmB,EAClE,KAAK,SAAS,MAAM,GAAG,MAAM,EAE7B,UAAU,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,OAAO,KAAK,EACZ,kBAAiB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,WAAW,CAA4B,KAChH,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAOtC,CAAC"}
@@ -1,36 +1,9 @@
1
- import { Effect, Effectable, Option } from "effect";
2
- import { fromPrismaPromise } from "./promise.js";
1
+ import { Effect, Effectable } from "effect";
3
2
  import { executeQuery } from "./query-execution.js";
4
- import { appendOperation, replayRecipe, rootRecipe, } from "./recipe.js";
3
+ import { appendOperation, replayRecipe, rootRecipe } from "./recipe.js";
5
4
  import { setRelationPlan } from "./relation-plan.js";
5
+ import { evaluateResult } from "./relation-result.js";
6
6
  import { makeRelationStream } from "./relation-stream.js";
7
- const evaluateResult = (value, terminal) => {
8
- if (terminal === "count" &&
9
- typeof value === "object" &&
10
- value !== null &&
11
- typeof Reflect.get(value, "aggregate") === "function") {
12
- const aggregate = Reflect.apply(Reflect.get(value, "aggregate"), value, [(summary) => ({ count: summary.count() })]);
13
- return fromPrismaPromise(() => aggregate).pipe(Effect.map((result) => result.count));
14
- }
15
- if (terminal === "exists" &&
16
- typeof value === "object" &&
17
- value !== null &&
18
- typeof Reflect.get(value, "first") === "function") {
19
- const first = Reflect.apply(Reflect.get(value, "first"), value, []);
20
- return fromPrismaPromise(() => first).pipe(Effect.map((result) => result !== null));
21
- }
22
- const executable = typeof value === "object" &&
23
- value !== null &&
24
- typeof Reflect.get(value, "all") === "function"
25
- ? Reflect.apply(Reflect.get(value, "all"), value, [])
26
- : value;
27
- if (typeof executable === "object" &&
28
- executable !== null &&
29
- "then" in executable) {
30
- return fromPrismaPromise(() => executable).pipe(Effect.map((result) => terminal === "first" ? Option.fromNullishOr(result) : result));
31
- }
32
- return Effect.succeed(executable);
33
- };
34
7
  const runtimes = new WeakMap();
35
8
  const runtimeOf = (self) => {
36
9
  const runtime = runtimes.get(self);
@@ -42,24 +15,23 @@ const runtimeOf = (self) => {
42
15
  const relationEffect = (self) => {
43
16
  const runtime = runtimeOf(self);
44
17
  return Effect.flatMap(runtime.resolveExecutor, (executor) => executeQuery(executor, Effect.suspend(() => evaluateResult(replayRecipe(executor.models, runtime.recipe, executor.identity, executor.transactionIdentity), runtime.terminal)))).pipe(Effect.withSpan(`prisma.${runtime.recipe.model}.${String(runtime.terminal ?? "all")}`, {
45
- kind: "client",
46
18
  attributes: {
47
- "db.system": "postgresql",
48
19
  "db.model": runtime.recipe.model,
49
20
  "db.operation": String(runtime.terminal ?? "all"),
21
+ "db.system": "postgresql",
50
22
  },
23
+ kind: "client",
51
24
  }));
52
25
  };
53
26
  const RelationPrototype = {
54
27
  ...Effectable.Prototype({
55
- label: "EffectPrismaRelation",
56
28
  evaluate() {
57
29
  return relationEffect(this);
58
30
  },
31
+ label: "EffectPrismaRelation",
59
32
  }),
60
33
  get stream() {
61
- const relation = this;
62
- const runtime = runtimeOf(relation);
34
+ const runtime = runtimeOf(this);
63
35
  return makeRelationStream(runtime.resolveExecutor, runtime.recipe);
64
36
  },
65
37
  };
@@ -105,9 +77,12 @@ const makeRelationProxy = (runtime) => {
105
77
  }
106
78
  return proxy;
107
79
  };
108
- export const makeModelRelation = (executor, model, resolveExecutor = Effect.succeed(executor)) => makeRelationProxy({
80
+ function asRelation(proxy) {
81
+ return proxy;
82
+ }
83
+ export const makeModelRelation = (executor, model, resolveExecutor = Effect.succeed(executor)) => asRelation(makeRelationProxy({
109
84
  executor,
110
85
  recipe: rootRecipe(model),
111
86
  resolveExecutor,
112
- });
87
+ }));
113
88
  //# sourceMappingURL=relation-runtime.js.map