@shivaedev/effect-prisma 0.4.1 → 0.4.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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.4.2 - 2026-08-03
6
+
7
+ ### Fixed
8
+
9
+ - Provide a contract-normalization command that corrects Prisma Next's
10
+ PostgreSQL timestamp declarations without recursively expanding large client
11
+ types.
12
+
5
13
  ## 0.4.1 - 2026-08-03
6
14
 
7
15
  ### Fixed
package/README.md CHANGED
@@ -15,6 +15,16 @@ pnpm add @shivaedev/effect-prisma effect
15
15
  Generate a Prisma Next contract in the application, then create its database
16
16
  service:
17
17
 
18
+ ```sh
19
+ prisma-next contract emit
20
+ effect-prisma-normalize path/to/generated/contract.d.ts
21
+ ```
22
+
23
+ The normalization step is idempotent and currently required because Prisma
24
+ Next's generated PostgreSQL timestamp output declarations do not match its
25
+ runtime `Date` codecs. It fails when Prisma emits an unfamiliar timestamp shape
26
+ instead of silently producing weakened types.
27
+
18
28
  ```ts
19
29
  import { makeDatabase } from "@shivaedev/effect-prisma"
20
30
  import { contractJson, type Contract } from "./generated/contract.js"
@@ -96,9 +106,8 @@ create/update/delete terminals. Model variants are deliberately deferred rather
96
106
  than exposed with weakened types.
97
107
 
98
108
  PostgreSQL timestamp and timestamp-with-time-zone fields use JavaScript `Date`
99
- values for reads, writes, filters, selections, includes, and Streams. The facade
100
- normalizes Prisma Next's current branded-string contract declarations to the
101
- `Date` values its runtime codecs actually accept and return.
109
+ values for reads, writes, filters, selections, includes, and Streams after the
110
+ generated contract is normalized.
102
111
 
103
112
  ## Transactions
104
113
 
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=normalize-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-contract.d.ts","sourceRoot":"","sources":["../../src/bin/normalize-contract.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { readFile, writeFile } from "node:fs/promises";
3
+ import { normalizePrismaNextContractTypes } from "../internal/contract-normalization.js";
4
+ const arguments_ = process.argv.slice(2);
5
+ if (arguments_.length !== 1 || arguments_[0] === undefined) {
6
+ throw new Error("Usage: effect-prisma-normalize <generated-contract.d.ts>");
7
+ }
8
+ const contractPath = arguments_[0];
9
+ const source = await readFile(contractPath, "utf8");
10
+ const normalized = normalizePrismaNextContractTypes(source);
11
+ if (normalized !== source) {
12
+ await writeFile(contractPath, normalized);
13
+ }
14
+ //# sourceMappingURL=normalize-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-contract.js","sourceRoot":"","sources":["../../src/bin/normalize-contract.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;IAC5D,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,UAAU,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;AAE5D,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IAC3B,MAAM,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Align Prisma Next's generated PostgreSQL timestamp declarations with the
3
+ * JavaScript Dates accepted and returned by its runtime codecs.
4
+ */
5
+ export declare const normalizePrismaNextContractTypes: (source: string) => string;
6
+ //# sourceMappingURL=contract-normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-normalization.d.ts","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,gCAAgC,GAAI,QAAQ,MAAM,KAAG,MAUjE,CAAC"}
@@ -0,0 +1,14 @@
1
+ const timestampReference = /\b(?:Timestamp|Timestamptz)<(?:\d+|undefined)>/g;
2
+ const unsupportedTimestampReference = /\b(?:Timestamp|Timestamptz)\s*</;
3
+ /**
4
+ * Align Prisma Next's generated PostgreSQL timestamp declarations with the
5
+ * JavaScript Dates accepted and returned by its runtime codecs.
6
+ */
7
+ export const normalizePrismaNextContractTypes = (source) => {
8
+ const normalized = source.replaceAll(timestampReference, "Date");
9
+ if (unsupportedTimestampReference.test(normalized)) {
10
+ throw new Error("Unsupported Prisma Next timestamp declaration; update effect-prisma before using this generated contract");
11
+ }
12
+ return normalized;
13
+ };
14
+ //# sourceMappingURL=contract-normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-normalization.js","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,iDAAiD,CAAC;AAC7E,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,MAAc,EAAU,EAAE;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAEjE,IAAI,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACd,0GAA0G,CAC1G,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC"}
@@ -3,7 +3,6 @@ import type { SqlStorage } from "@prisma-next/sql-contract/types";
3
3
  import type { AggregateBuilder, AggregateResult, AggregateSpec, DefaultModelRow, GroupedCollection, Collection as PrismaCollection } from "@prisma-next/sql-orm-client";
4
4
  import type { Effect, Stream } from "effect";
5
5
  import type { PrismaError } from "../error.js";
6
- import type { NormalizePrismaArguments, NormalizePrismaValue } from "../internal/type-normalization.js";
7
6
  import type { CollectionResult, Relation, RelationQuery } from "../relation.js";
8
7
  import type { IncludeMethod } from "./include.js";
9
8
  type AnyFunction = (...arguments_: ReadonlyArray<never>) => unknown;
@@ -12,7 +11,7 @@ type FieldTuple<Row> = readonly [keyof Row & string, ...(keyof Row & string)[]];
12
11
  type Simplify<Value> = {
13
12
  [Key in keyof Value]: Value[Key];
14
13
  };
15
- type TerminalMethod<Method, Requirement> = Method extends (...arguments_: infer Arguments) => PromiseLike<infer Value> ? (...arguments_: NormalizePrismaArguments<Arguments>) => Effect.Effect<NormalizePrismaValue<Awaited<Value>>, PrismaError, Requirement> : never;
14
+ type TerminalMethod<Method, Requirement> = Method extends (...arguments_: infer Arguments) => PromiseLike<infer Value> ? (...arguments_: Arguments) => Effect.Effect<Awaited<Value>, PrismaError, Requirement> : never;
16
15
  type SelectMethod<Collection, Requirement, Contract, Model extends string> = Contract extends AnyPostgresContract ? Collection extends PrismaCollection<Contract, Model, infer _Row, infer State> ? {
17
16
  select<Fields extends FieldTuple<DefaultModelRow<Contract, Model>>>(...fields: Fields): Relation<PrismaCollection<Contract, Model, Pick<DefaultModelRow<Contract, Model>, Fields[number]>, State>, Requirement, Contract, Model>;
18
17
  } : Record<never, never> : Collection extends {
@@ -27,7 +26,7 @@ type AggregateSuccess<Collection, Contract extends AnyPostgresContract, Model ex
27
26
  type AggregateMethod<Collection, Requirement, Contract, Model extends string> = Contract extends AnyPostgresContract ? Collection extends {
28
27
  aggregate: AnyFunction;
29
28
  } ? {
30
- aggregate<Spec extends AggregateSpec>(make: (aggregate: AggregateBuilder<Contract, Model>) => Spec, configure?: AggregateConfigure<Collection>): Effect.Effect<NormalizePrismaValue<AggregateSuccess<Collection, Contract, Model, Spec>>, PrismaError, Requirement>;
29
+ aggregate<Spec extends AggregateSpec>(make: (aggregate: AggregateBuilder<Contract, Model>) => Spec, configure?: AggregateConfigure<Collection>): Effect.Effect<AggregateSuccess<Collection, Contract, Model, Spec>, PrismaError, Requirement>;
31
30
  } : Record<never, never> : Record<never, never>;
32
31
  type CollectionMethods<Collection, Requirement, Contract, Model extends string> = Contract extends AnyPostgresContract ? Collection extends PrismaCollection<Contract, Model, infer _Row, infer State> ? {
33
32
  groupBy<Fields extends FieldTuple<DefaultModelRow<Contract, Model>>>(...fields: Fields): Relation<GroupedCollection<Contract, Model, Fields>, Requirement, Contract, Model>;
@@ -44,11 +43,11 @@ type CollectionMethods<Collection, Requirement, Contract, Model extends string>
44
43
  readonly [Key in "delete" | "deleteAll" | "deleteCount"]: TerminalMethod<Collection[Key], Requirement>;
45
44
  } : Record<never, never>) : Record<never, never> : Record<never, never>;
46
45
  type CollectionConveniences<Collection, Requirement, Contract, Model extends string> = Contract extends AnyPostgresContract ? Collection extends PrismaCollection<Contract, Model, infer Row, infer _State> ? {
47
- readonly stream: Stream.Stream<NormalizePrismaValue<Row>, PrismaError, Requirement>;
46
+ readonly stream: Stream.Stream<Row, PrismaError, Requirement>;
48
47
  count(): RelationQuery<number, Requirement, Contract, Model>;
49
48
  exists(): Effect.Effect<boolean, PrismaError, Requirement>;
50
49
  } : Record<never, never> : CollectionResult<Collection> extends ReadonlyArray<infer Row> ? {
51
- readonly stream: Stream.Stream<NormalizePrismaValue<Row>, PrismaError, Requirement>;
50
+ readonly stream: Stream.Stream<Row, PrismaError, Requirement>;
52
51
  count(): Effect.Effect<number, PrismaError, Requirement>;
53
52
  exists(): Effect.Effect<boolean, PrismaError, Requirement>;
54
53
  } : Record<never, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-methods.d.ts","sourceRoot":"","sources":["../../src/relation/prisma-methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-methods.d.ts","sourceRoot":"","sources":["../../src/relation/prisma-methods.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import type { Effect } from "effect";
2
2
  import type { PrismaError } from "./error.js";
3
- import type { NormalizePrismaArguments, NormalizePrismaValue } from "./internal/type-normalization.js";
4
3
  import type { PrismaRelationMethods } from "./relation/prisma-methods.js";
5
4
  type AnyFunction = (...arguments_: ReadonlyArray<never>) => unknown;
6
5
  export type CollectionResult<Collection> = Collection extends {
7
6
  all(): infer Result;
8
- } ? NormalizePrismaValue<Awaited<Result>> : never;
7
+ } ? Awaited<Result> : never;
9
8
  type NormalizeTerminal<Name, Result> = Name extends "first" ? import("effect").Option.Option<Exclude<Result, null>> : Result;
10
- type WrapReturn<Name, Result, Requirement, Contract, Model extends string> = Result extends PromiseLike<infer Value> ? Effect.Effect<NormalizeTerminal<Name, NormalizePrismaValue<Awaited<Value>>>, PrismaError, Requirement> : Result extends object ? Relation<Result, Requirement, Contract, Model> : never;
9
+ type WrapReturn<Name, Result, Requirement, Contract, Model extends string> = Result extends PromiseLike<infer Value> ? Effect.Effect<NormalizeTerminal<Name, Awaited<Value>>, PrismaError, Requirement> : Result extends object ? Relation<Result, Requirement, Contract, Model> : never;
11
10
  type WrapFunction<Name, Function_, Requirement, Contract, Model extends string> = Function_ extends {
12
11
  (...arguments_: infer Arguments1): infer Result1;
13
12
  (...arguments_: infer Arguments2): infer Result2;
@@ -15,7 +14,7 @@ type WrapFunction<Name, Function_, Requirement, Contract, Model extends string>
15
14
  (...arguments_: infer Arguments4): infer Result4;
16
15
  (...arguments_: infer Arguments5): infer Result5;
17
16
  (...arguments_: infer Arguments6): infer Result6;
18
- } ? ((...arguments_: NormalizePrismaArguments<Arguments1>) => WrapReturn<Name, Result1, Requirement, Contract, Model>) & ((...arguments_: NormalizePrismaArguments<Arguments2>) => WrapReturn<Name, Result2, Requirement, Contract, Model>) & ((...arguments_: NormalizePrismaArguments<Arguments3>) => WrapReturn<Name, Result3, Requirement, Contract, Model>) & ((...arguments_: NormalizePrismaArguments<Arguments4>) => WrapReturn<Name, Result4, Requirement, Contract, Model>) & ((...arguments_: NormalizePrismaArguments<Arguments5>) => WrapReturn<Name, Result5, Requirement, Contract, Model>) & ((...arguments_: NormalizePrismaArguments<Arguments6>) => WrapReturn<Name, Result6, Requirement, Contract, Model>) : never;
17
+ } ? ((...arguments_: Arguments1) => WrapReturn<Name, Result1, Requirement, Contract, Model>) & ((...arguments_: Arguments2) => WrapReturn<Name, Result2, Requirement, Contract, Model>) & ((...arguments_: Arguments3) => WrapReturn<Name, Result3, Requirement, Contract, Model>) & ((...arguments_: Arguments4) => WrapReturn<Name, Result4, Requirement, Contract, Model>) & ((...arguments_: Arguments5) => WrapReturn<Name, Result5, Requirement, Contract, Model>) & ((...arguments_: Arguments6) => WrapReturn<Name, Result6, Requirement, Contract, Model>) : never;
19
18
  type FunctionKeys<Value> = {
20
19
  [Key in keyof Value]-?: Value[Key] extends AnyFunction ? Key : never;
21
20
  }[keyof Value];
@@ -1 +1 @@
1
- {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../src/relation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shivaedev/effect-prisma",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Effect-native PostgreSQL queries and transactions for Prisma Next",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,6 +17,9 @@
17
17
  "node": ">=24"
18
18
  },
19
19
  "sideEffects": false,
20
+ "bin": {
21
+ "effect-prisma-normalize": "./dist/bin/normalize-contract.js"
22
+ },
20
23
  "files": [
21
24
  "dist",
22
25
  "src",
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { readFile, writeFile } from "node:fs/promises";
4
+ import { normalizePrismaNextContractTypes } from "../internal/contract-normalization.js";
5
+
6
+ const arguments_ = process.argv.slice(2);
7
+ if (arguments_.length !== 1 || arguments_[0] === undefined) {
8
+ throw new Error("Usage: effect-prisma-normalize <generated-contract.d.ts>");
9
+ }
10
+
11
+ const contractPath = arguments_[0];
12
+ const source = await readFile(contractPath, "utf8");
13
+ const normalized = normalizePrismaNextContractTypes(source);
14
+
15
+ if (normalized !== source) {
16
+ await writeFile(contractPath, normalized);
17
+ }
@@ -0,0 +1,18 @@
1
+ const timestampReference = /\b(?:Timestamp|Timestamptz)<(?:\d+|undefined)>/g;
2
+ const unsupportedTimestampReference = /\b(?:Timestamp|Timestamptz)\s*</;
3
+
4
+ /**
5
+ * Align Prisma Next's generated PostgreSQL timestamp declarations with the
6
+ * JavaScript Dates accepted and returned by its runtime codecs.
7
+ */
8
+ export const normalizePrismaNextContractTypes = (source: string): string => {
9
+ const normalized = source.replaceAll(timestampReference, "Date");
10
+
11
+ if (unsupportedTimestampReference.test(normalized)) {
12
+ throw new Error(
13
+ "Unsupported Prisma Next timestamp declaration; update effect-prisma before using this generated contract",
14
+ );
15
+ }
16
+
17
+ return normalized;
18
+ };
@@ -10,10 +10,6 @@ import type {
10
10
  } from "@prisma-next/sql-orm-client";
11
11
  import type { Effect, Stream } from "effect";
12
12
  import type { PrismaError } from "../error.js";
13
- import type {
14
- NormalizePrismaArguments,
15
- NormalizePrismaValue,
16
- } from "../internal/type-normalization.js";
17
13
  import type { CollectionResult, Relation, RelationQuery } from "../relation.js";
18
14
  import type { IncludeMethod } from "./include.js";
19
15
 
@@ -26,12 +22,8 @@ type TerminalMethod<Method, Requirement> = Method extends (
26
22
  ...arguments_: infer Arguments
27
23
  ) => PromiseLike<infer Value>
28
24
  ? (
29
- ...arguments_: NormalizePrismaArguments<Arguments>
30
- ) => Effect.Effect<
31
- NormalizePrismaValue<Awaited<Value>>,
32
- PrismaError,
33
- Requirement
34
- >
25
+ ...arguments_: Arguments
26
+ ) => Effect.Effect<Awaited<Value>, PrismaError, Requirement>
35
27
  : never;
36
28
 
37
29
  type SelectMethod<
@@ -111,9 +103,7 @@ type AggregateMethod<
111
103
  make: (aggregate: AggregateBuilder<Contract, Model>) => Spec,
112
104
  configure?: AggregateConfigure<Collection>,
113
105
  ): Effect.Effect<
114
- NormalizePrismaValue<
115
- AggregateSuccess<Collection, Contract, Model, Spec>
116
- >,
106
+ AggregateSuccess<Collection, Contract, Model, Spec>,
117
107
  PrismaError,
118
108
  Requirement
119
109
  >;
@@ -181,22 +171,14 @@ type CollectionConveniences<
181
171
  infer _State
182
172
  >
183
173
  ? {
184
- readonly stream: Stream.Stream<
185
- NormalizePrismaValue<Row>,
186
- PrismaError,
187
- Requirement
188
- >;
174
+ readonly stream: Stream.Stream<Row, PrismaError, Requirement>;
189
175
  count(): RelationQuery<number, Requirement, Contract, Model>;
190
176
  exists(): Effect.Effect<boolean, PrismaError, Requirement>;
191
177
  }
192
178
  : Record<never, never>
193
179
  : CollectionResult<Collection> extends ReadonlyArray<infer Row>
194
180
  ? {
195
- readonly stream: Stream.Stream<
196
- NormalizePrismaValue<Row>,
197
- PrismaError,
198
- Requirement
199
- >;
181
+ readonly stream: Stream.Stream<Row, PrismaError, Requirement>;
200
182
  count(): Effect.Effect<number, PrismaError, Requirement>;
201
183
  exists(): Effect.Effect<boolean, PrismaError, Requirement>;
202
184
  }
package/src/relation.ts CHANGED
@@ -1,9 +1,5 @@
1
1
  import type { Effect } from "effect";
2
2
  import type { PrismaError } from "./error.js";
3
- import type {
4
- NormalizePrismaArguments,
5
- NormalizePrismaValue,
6
- } from "./internal/type-normalization.js";
7
3
  import type { PrismaRelationMethods } from "./relation/prisma-methods.js";
8
4
 
9
5
  type AnyFunction = (...arguments_: ReadonlyArray<never>) => unknown;
@@ -11,7 +7,7 @@ type AnyFunction = (...arguments_: ReadonlyArray<never>) => unknown;
11
7
  export type CollectionResult<Collection> = Collection extends {
12
8
  all(): infer Result;
13
9
  }
14
- ? NormalizePrismaValue<Awaited<Result>>
10
+ ? Awaited<Result>
15
11
  : never;
16
12
 
17
13
  type NormalizeTerminal<Name, Result> = Name extends "first"
@@ -21,7 +17,7 @@ type NormalizeTerminal<Name, Result> = Name extends "first"
21
17
  type WrapReturn<Name, Result, Requirement, Contract, Model extends string> =
22
18
  Result extends PromiseLike<infer Value>
23
19
  ? Effect.Effect<
24
- NormalizeTerminal<Name, NormalizePrismaValue<Awaited<Value>>>,
20
+ NormalizeTerminal<Name, Awaited<Value>>,
25
21
  PrismaError,
26
22
  Requirement
27
23
  >
@@ -44,22 +40,22 @@ type WrapFunction<
44
40
  (...arguments_: infer Arguments6): infer Result6;
45
41
  }
46
42
  ? ((
47
- ...arguments_: NormalizePrismaArguments<Arguments1>
43
+ ...arguments_: Arguments1
48
44
  ) => WrapReturn<Name, Result1, Requirement, Contract, Model>) &
49
45
  ((
50
- ...arguments_: NormalizePrismaArguments<Arguments2>
46
+ ...arguments_: Arguments2
51
47
  ) => WrapReturn<Name, Result2, Requirement, Contract, Model>) &
52
48
  ((
53
- ...arguments_: NormalizePrismaArguments<Arguments3>
49
+ ...arguments_: Arguments3
54
50
  ) => WrapReturn<Name, Result3, Requirement, Contract, Model>) &
55
51
  ((
56
- ...arguments_: NormalizePrismaArguments<Arguments4>
52
+ ...arguments_: Arguments4
57
53
  ) => WrapReturn<Name, Result4, Requirement, Contract, Model>) &
58
54
  ((
59
- ...arguments_: NormalizePrismaArguments<Arguments5>
55
+ ...arguments_: Arguments5
60
56
  ) => WrapReturn<Name, Result5, Requirement, Contract, Model>) &
61
57
  ((
62
- ...arguments_: NormalizePrismaArguments<Arguments6>
58
+ ...arguments_: Arguments6
63
59
  ) => WrapReturn<Name, Result6, Requirement, Contract, Model>)
64
60
  : never;
65
61
 
@@ -1,22 +0,0 @@
1
- type TimestampBrand = {
2
- readonly __timestampPrecision: number | undefined;
3
- } | {
4
- readonly __timestamptzPrecision: number | undefined;
5
- };
6
- type PreservedValue = string | number | boolean | bigint | symbol | Date | Uint8Array | ArrayBuffer;
7
- export type NormalizePrismaArguments<Arguments extends readonly unknown[]> = {
8
- [Index in keyof Arguments]: NormalizePrismaValue<Arguments[Index]>;
9
- };
10
- /**
11
- * Prisma Next's PostgreSQL codecs return JavaScript Dates for timestamp values,
12
- * while its generated contracts currently render precision-bearing timestamp
13
- * fields as branded strings. Keep the public Effect facade aligned with the
14
- * codec's actual input and output values without modifying generated contracts.
15
- */
16
- export type NormalizePrismaValue<Value> = Value extends TimestampBrand ? Date : Value extends PreservedValue ? Value : Value extends (...arguments_: infer Arguments) => infer Result ? (...arguments_: NormalizePrismaArguments<Arguments>) => NormalizePrismaValue<Result> : Value extends readonly unknown[] ? {
17
- [Index in keyof Value]: NormalizePrismaValue<Value[Index]>;
18
- } : Value extends object ? {
19
- [Key in keyof Value]: NormalizePrismaValue<Value[Key]>;
20
- } : Value;
21
- export {};
22
- //# sourceMappingURL=type-normalization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-normalization.d.ts","sourceRoot":"","sources":["../../src/internal/type-normalization.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAChB;IAAE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE3D,KAAK,cAAc,GAChB,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,GACJ,UAAU,GACV,WAAW,CAAC;AAEf,MAAM,MAAM,wBAAwB,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI;KAC3E,KAAK,IAAI,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAClE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI,KAAK,SAAS,cAAc,GACnE,IAAI,GACJ,KAAK,SAAS,cAAc,GAC3B,KAAK,GACL,KAAK,SAAS,CAAC,GAAG,UAAU,EAAE,MAAM,SAAS,KAAK,MAAM,MAAM,GAC7D,CACA,GAAG,UAAU,EAAE,wBAAwB,CAAC,SAAS,CAAC,KAC9C,oBAAoB,CAAC,MAAM,CAAC,GAChC,KAAK,SAAS,SAAS,OAAO,EAAE,GAC/B;KAAG,KAAK,IAAI,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAAE,GAC9D,KAAK,SAAS,MAAM,GACnB;KAAG,GAAG,IAAI,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAAE,GAC1D,KAAK,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=type-normalization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-normalization.js","sourceRoot":"","sources":["../../src/internal/type-normalization.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- type TimestampBrand =
2
- | { readonly __timestampPrecision: number | undefined }
3
- | { readonly __timestamptzPrecision: number | undefined };
4
-
5
- type PreservedValue =
6
- | string
7
- | number
8
- | boolean
9
- | bigint
10
- | symbol
11
- | Date
12
- | Uint8Array
13
- | ArrayBuffer;
14
-
15
- export type NormalizePrismaArguments<Arguments extends readonly unknown[]> = {
16
- [Index in keyof Arguments]: NormalizePrismaValue<Arguments[Index]>;
17
- };
18
-
19
- /**
20
- * Prisma Next's PostgreSQL codecs return JavaScript Dates for timestamp values,
21
- * while its generated contracts currently render precision-bearing timestamp
22
- * fields as branded strings. Keep the public Effect facade aligned with the
23
- * codec's actual input and output values without modifying generated contracts.
24
- */
25
- export type NormalizePrismaValue<Value> = Value extends TimestampBrand
26
- ? Date
27
- : Value extends PreservedValue
28
- ? Value
29
- : Value extends (...arguments_: infer Arguments) => infer Result
30
- ? (
31
- ...arguments_: NormalizePrismaArguments<Arguments>
32
- ) => NormalizePrismaValue<Result>
33
- : Value extends readonly unknown[]
34
- ? { [Index in keyof Value]: NormalizePrismaValue<Value[Index]> }
35
- : Value extends object
36
- ? { [Key in keyof Value]: NormalizePrismaValue<Value[Key]> }
37
- : Value;