@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.
- package/CHANGELOG.md +26 -1
- package/dist/bin/normalize-contract.js +1 -0
- package/dist/bin/normalize-contract.js.map +1 -1
- package/dist/database.d.ts +4 -4
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +12 -12
- package/dist/database.js.map +1 -1
- package/dist/error.d.ts +5 -5
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +5 -6
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/internal/adapters/transaction-settlement.d.ts +10 -0
- package/dist/internal/adapters/transaction-settlement.d.ts.map +1 -0
- package/dist/internal/adapters/transaction-settlement.js +56 -0
- package/dist/internal/adapters/transaction-settlement.js.map +1 -0
- package/dist/internal/client-lifecycle.d.ts +2 -2
- package/dist/internal/client-lifecycle.d.ts.map +1 -1
- package/dist/internal/client-lifecycle.js.map +1 -1
- package/dist/internal/contract-normalization.d.ts +0 -4
- package/dist/internal/contract-normalization.d.ts.map +1 -1
- package/dist/internal/contract-normalization.js +5 -10
- package/dist/internal/contract-normalization.js.map +1 -1
- package/dist/internal/database-facade.d.ts +19 -0
- package/dist/internal/database-facade.d.ts.map +1 -0
- package/dist/internal/database-facade.js +79 -0
- package/dist/internal/database-facade.js.map +1 -0
- package/dist/internal/database-factory.d.ts +4 -48
- package/dist/internal/database-factory.d.ts.map +1 -1
- package/dist/internal/database-factory.js +11 -90
- package/dist/internal/database-factory.js.map +1 -1
- package/dist/internal/database-types.d.ts +33 -0
- package/dist/internal/database-types.d.ts.map +1 -0
- package/dist/internal/database-types.js +2 -0
- package/dist/internal/database-types.js.map +1 -0
- package/dist/internal/dynamic.d.ts +5 -0
- package/dist/internal/dynamic.d.ts.map +1 -0
- package/dist/internal/dynamic.js +12 -0
- package/dist/internal/dynamic.js.map +1 -0
- package/dist/internal/executor.d.ts +3 -7
- package/dist/internal/executor.d.ts.map +1 -1
- package/dist/internal/promise.d.ts +1 -1
- package/dist/internal/promise.d.ts.map +1 -1
- package/dist/internal/promise.js +2 -4
- package/dist/internal/promise.js.map +1 -1
- package/dist/internal/query-execution.d.ts +2 -2
- package/dist/internal/query-execution.d.ts.map +1 -1
- package/dist/internal/query-execution.js +2 -6
- package/dist/internal/query-execution.js.map +1 -1
- package/dist/internal/recipe.d.ts +3 -3
- package/dist/internal/recipe.d.ts.map +1 -1
- package/dist/internal/recipe.js +9 -20
- package/dist/internal/recipe.js.map +1 -1
- package/dist/internal/relation-plan.d.ts +1 -1
- package/dist/internal/relation-result.d.ts +4 -0
- package/dist/internal/relation-result.d.ts.map +1 -0
- package/dist/internal/relation-result.js +19 -0
- package/dist/internal/relation-result.js.map +1 -0
- package/dist/internal/relation-runtime.d.ts +3 -3
- package/dist/internal/relation-runtime.d.ts.map +1 -1
- package/dist/internal/relation-runtime.js +12 -37
- package/dist/internal/relation-runtime.js.map +1 -1
- package/dist/internal/relation-stream.d.ts +3 -3
- package/dist/internal/relation-stream.d.ts.map +1 -1
- package/dist/internal/relation-stream.js +20 -24
- package/dist/internal/relation-stream.js.map +1 -1
- package/dist/internal/sqlite-datetime.d.ts +1 -27
- package/dist/internal/sqlite-datetime.d.ts.map +1 -1
- package/dist/internal/sqlite-datetime.js +16 -35
- package/dist/internal/sqlite-datetime.js.map +1 -1
- package/dist/internal/sqlite-pragmas.d.ts +1 -13
- package/dist/internal/sqlite-pragmas.d.ts.map +1 -1
- package/dist/internal/sqlite-pragmas.js +2 -12
- package/dist/internal/sqlite-pragmas.js.map +1 -1
- package/dist/internal/testing.d.ts +1 -1
- package/dist/internal/testing.d.ts.map +1 -1
- package/dist/internal/testing.js +5 -2
- package/dist/internal/testing.js.map +1 -1
- package/dist/internal/transaction.d.ts +5 -5
- package/dist/internal/transaction.d.ts.map +1 -1
- package/dist/internal/transaction.js +5 -53
- package/dist/internal/transaction.js.map +1 -1
- package/dist/relation/include-metadata.d.ts +1 -1
- package/dist/relation/include-metadata.d.ts.map +1 -1
- package/dist/relation/include.d.ts +8 -5
- package/dist/relation/include.d.ts.map +1 -1
- package/dist/relation/prisma-methods.d.ts +17 -17
- package/dist/relation/prisma-methods.d.ts.map +1 -1
- package/dist/relation.d.ts +4 -4
- package/dist/relation.d.ts.map +1 -1
- package/dist/sqlite.d.ts +5 -10
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +14 -12
- package/dist/sqlite.js.map +1 -1
- package/dist/testing/transaction.d.ts +6 -7
- package/dist/testing/transaction.d.ts.map +1 -1
- package/dist/testing/transaction.js +2 -2
- package/dist/testing/transaction.js.map +1 -1
- package/dist/testing/types.d.ts +7 -7
- package/dist/testing/types.d.ts.map +1 -1
- package/dist/testing/vitest.d.ts +3 -3
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/testing/vitest.js +2 -2
- package/dist/testing/vitest.js.map +1 -1
- package/dist/testing.d.ts +3 -3
- package/package.json +35 -37
- package/src/bin/normalize-contract.ts +2 -1
- package/src/database.ts +49 -67
- package/src/error.ts +13 -23
- package/src/index.ts +3 -3
- package/src/internal/adapters/transaction-settlement.ts +70 -0
- package/src/internal/client-lifecycle.ts +4 -11
- package/src/internal/contract-normalization.ts +6 -14
- package/src/internal/database-facade.ts +138 -0
- package/src/internal/database-factory.ts +34 -306
- package/src/internal/database-types.ts +65 -0
- package/src/internal/dynamic.ts +16 -0
- package/src/internal/executor.ts +4 -11
- package/src/internal/promise.ts +4 -12
- package/src/internal/query-execution.ts +4 -8
- package/src/internal/recipe.ts +24 -89
- package/src/internal/relation-plan.ts +1 -1
- package/src/internal/relation-result.ts +27 -0
- package/src/internal/relation-runtime.ts +45 -135
- package/src/internal/relation-stream.ts +24 -51
- package/src/internal/sqlite-datetime.ts +20 -54
- package/src/internal/sqlite-pragmas.ts +3 -16
- package/src/internal/testing.ts +13 -15
- package/src/internal/transaction.ts +16 -109
- package/src/relation/include-metadata.ts +11 -43
- package/src/relation/include.ts +46 -140
- package/src/relation/prisma-methods.ts +36 -122
- package/src/relation.ts +20 -48
- package/src/sqlite.ts +59 -85
- package/src/testing/transaction.ts +20 -33
- package/src/testing/types.ts +15 -34
- package/src/testing/vitest.ts +14 -28
- package/src/testing.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.7.0 - 2026-10-04
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Consolidate duplicate test cases around observable package behavior.
|
|
8
|
+
- The function members of the relation, collection and database types are declared as properties, so TypeScript checks their parameters strictly.
|
|
9
|
+
|
|
10
|
+
- Validate packed consumers and executable bins through the shared workspace gate.
|
|
11
|
+
|
|
12
|
+
- Replace JSDoc blocks with short reason comments, so the package passes the comment rules of `@shivaedev/quality`.
|
|
13
|
+
|
|
14
|
+
- Build with the `@shivaedev/quality` tsconfig presets, which target ESNext and allow only erasable TypeScript syntax, so classes declare their fields instead of using constructor parameter properties.
|
|
15
|
+
|
|
16
|
+
- Type-check with TypeScript 7 only. TypeScript 6 still builds the package.
|
|
17
|
+
|
|
18
|
+
- Lint and format with the `@shivaedev/quality` Biome preset through `quality lint` at the repository root, which replaces the package's `check` script.
|
|
19
|
+
|
|
20
|
+
- Run tests through the `@shivaedev/quality` Vitest projects, which take a test's environment from its file name. Type tests are named `*.typecheck.test.ts`.
|
|
21
|
+
|
|
22
|
+
- Keep `package.json` in sort-package-json key order, checked by `quality lint`.
|
|
23
|
+
|
|
24
|
+
## 0.6.4 - 2026-09-26
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Require Effect Test 0.1.2, whose `eventually` retries only typed failures.
|
|
4
29
|
|
|
5
30
|
## 0.6.3 - 2026-09-04
|
|
6
31
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import process from "node:process";
|
|
3
4
|
import { normalizePrismaNextContractTypes } from "../internal/contract-normalization.js";
|
|
4
5
|
const arguments_ = process.argv.slice(2);
|
|
5
6
|
if (arguments_.length !== 1 || arguments_[0] === undefined) {
|
|
@@ -1 +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"}
|
|
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,OAAO,MAAM,cAAc,CAAC;AACnC,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"}
|
package/dist/database.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type PostgresOptionsBase } from "@prisma-next/postgres/runtime";
|
|
2
2
|
import { type Layer, Redacted } from "effect";
|
|
3
|
-
import type { PrismaError } from "./error.
|
|
4
|
-
import {
|
|
5
|
-
import type { AnySqlContract } from "./internal/executor.
|
|
6
|
-
export type { AnyDatabase, DatabaseService, DatabaseServiceOf, } from "./internal/database-
|
|
3
|
+
import type { PrismaError } from "./error.ts";
|
|
4
|
+
import type { DatabaseIdentifier, DatabaseIdentifierLiteral, DatabaseServiceHolder } from "./internal/database-types.ts";
|
|
5
|
+
import type { AnySqlContract } from "./internal/executor.ts";
|
|
6
|
+
export type { AnyDatabase, DatabaseService, DatabaseServiceOf, } from "./internal/database-types.ts";
|
|
7
7
|
export interface DatabaseLayerOptions extends PostgresOptionsBase {
|
|
8
8
|
readonly url: string | Redacted.Redacted<string>;
|
|
9
9
|
}
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAiB,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAuB,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACxG,OAAO,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,EAAiB,MAAM,8BAA8B,CAAC;AACxI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,YAAY,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,KAAK,sBAAsB,CAAC,QAAQ,SAAS,cAAc,IACxD;IACA,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;CAC7B,GACD;IACA,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CACzB,CAAC;AAEL,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,CAAE,SAAQ,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC;IAClJ,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;CACtH;AAaD,eAAO,MAAM,YAAY,GACvB,KAAK,CAAC,QAAQ,SAAS,cAAc,QACrC,KAAK,CAAC,UAAU,SAAS,MAAM,EAC/B,YAAY,yBAAyB,CAAC,UAAU,CAAC,EACjD,SAAS,sBAAsB,CAAC,QAAQ,CAAC,KACvC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAgCzC,CAAC"}
|
package/dist/database.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import postgres, {} from "@prisma-next/postgres/runtime";
|
|
2
2
|
import { Redacted } from "effect";
|
|
3
3
|
import { acquireConnectedClient } from "./internal/client-lifecycle.js";
|
|
4
|
-
import {
|
|
4
|
+
import { namespaceModels } from "./internal/database-facade.js";
|
|
5
|
+
import { makeSqlDatabase } from "./internal/database-factory.js";
|
|
5
6
|
import { fromPrismaPromise } from "./internal/promise.js";
|
|
7
|
+
const clientOptions = ({ url, extensions, middleware, poolOptions, verifyMarker }) => ({
|
|
8
|
+
url: typeof url === "string" ? url : Redacted.value(url),
|
|
9
|
+
...(extensions === undefined ? {} : { extensions }),
|
|
10
|
+
...(middleware === undefined ? {} : { middleware }),
|
|
11
|
+
...(poolOptions === undefined ? {} : { poolOptions }),
|
|
12
|
+
...(verifyMarker === undefined ? {} : { verifyMarker }),
|
|
13
|
+
});
|
|
6
14
|
const defaultModels = (client) => namespaceModels(client.contract, client.orm);
|
|
7
15
|
export const makeDatabase = () => (identifier, options) => {
|
|
8
16
|
return makeSqlDatabase(identifier, (layerOptions) => {
|
|
9
|
-
const
|
|
10
|
-
url: typeof layerOptions.url === "string"
|
|
11
|
-
? layerOptions.url
|
|
12
|
-
: Redacted.value(layerOptions.url),
|
|
13
|
-
extensions: layerOptions.extensions,
|
|
14
|
-
middleware: layerOptions.middleware,
|
|
15
|
-
poolOptions: layerOptions.poolOptions,
|
|
16
|
-
verifyMarker: layerOptions.verifyMarker,
|
|
17
|
-
};
|
|
17
|
+
const forwarded = clientOptions(layerOptions);
|
|
18
18
|
const client = options.contract === undefined
|
|
19
19
|
? postgres({
|
|
20
|
-
...
|
|
20
|
+
...forwarded,
|
|
21
21
|
contractJson: options.contractJson,
|
|
22
22
|
})
|
|
23
23
|
: postgres({
|
|
24
|
-
...
|
|
24
|
+
...forwarded,
|
|
25
25
|
contract: options.contract,
|
|
26
26
|
});
|
|
27
27
|
return fromPrismaPromise(() => acquireConnectedClient(client, () => ({
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAiD,MAAM,+BAA+B,CAAC;AACxG,OAAO,EAAc,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA0B1D,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAwB,EAAE,EAAE,CAAC,CAAC;IAC5G,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;IACxD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;IACnD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;IACnD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IACrD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAyD,MAA0D,EAAU,EAAE,CACpJ,eAAe,CAAmB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GACxB,GAA0C,EAAE,CAC5C,CACC,UAAiD,EACjD,OAAyC,EACE,EAAE;IAG7C,OAAO,eAAe,CAA6C,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE;QAC/F,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GACX,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,QAAQ,CAAW;gBACnB,GAAG,SAAS;gBACZ,YAAY,EAAE,OAAO,CAAC,YAAY;aAClC,CAAC;YACH,CAAC,CAAC,QAAQ,CAAW;gBACnB,GAAG,SAAS;gBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC1B,CAAC,CAAC;QAEN,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAC7B,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACrC,MAAM;YACN,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE;gBACT,UAAU,EAAE,yBAAyB;gBACrC,IAAI,EAAE,IAAI;aACV;YACD,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,aAAa,CAAmB,MAAM,CAAC;YAC/C,cAAc,EAAE,SAAS;YACzB,mBAAmB,EAAE,SAAS;YAC9B,oBAAoB,EAAE,SAAS;SAC/B,CAAC,CAAC,CACH,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/error.d.ts
CHANGED
|
@@ -11,10 +11,10 @@ declare const PrismaQueryFailure_base: new <A extends Record<string, any> = {}>(
|
|
|
11
11
|
readonly _tag: "PrismaQueryFailure";
|
|
12
12
|
} & import("effect/Pipeable").Pipeable;
|
|
13
13
|
export declare class PrismaQueryFailure extends PrismaQueryFailure_base<{
|
|
14
|
-
readonly sqlState?: string;
|
|
15
|
-
readonly constraint?: string;
|
|
16
|
-
readonly table?: string;
|
|
17
|
-
readonly column?: string;
|
|
14
|
+
readonly sqlState?: string | undefined;
|
|
15
|
+
readonly constraint?: string | undefined;
|
|
16
|
+
readonly table?: string | undefined;
|
|
17
|
+
readonly column?: string | undefined;
|
|
18
18
|
readonly original: Redacted.Redacted<unknown>;
|
|
19
19
|
}> {
|
|
20
20
|
}
|
|
@@ -22,7 +22,7 @@ declare const PrismaConnectionFailure_base: new <A extends Record<string, any> =
|
|
|
22
22
|
readonly _tag: "PrismaConnectionFailure";
|
|
23
23
|
} & import("effect/Pipeable").Pipeable;
|
|
24
24
|
export declare class PrismaConnectionFailure extends PrismaConnectionFailure_base<{
|
|
25
|
-
readonly transient?: boolean;
|
|
25
|
+
readonly transient?: boolean | undefined;
|
|
26
26
|
readonly original: Redacted.Redacted<unknown>;
|
|
27
27
|
}> {
|
|
28
28
|
}
|
package/dist/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,MAAM,QAAQ,CAAC;;;;AAExC,qBAAa,oBAAqB,SAAQ,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,MAAM,QAAQ,CAAC;;;;AAExC,qBAAa,oBAAqB,SAAQ,0BAAyC;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;CAAG;;;;AAEL,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;CAAG;;;;AAEL,qBAAa,uBAAwB,SAAQ,6BAA4C;IACxF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC9C,CAAC;CAAG;AAEL,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;;;;AAEpG,qBAAa,WAAY,SAAQ,iBAAgC;IAChE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACnC,CAAC;CAAG;AAEL,KAAK,aAAa,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IACA,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEL,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAQzD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WA4BpD,CAAC"}
|
package/dist/error.js
CHANGED
|
@@ -14,27 +14,26 @@ export const isPrismaFailure = (error) => {
|
|
|
14
14
|
if ("code" in error && typeof error.code === "string") {
|
|
15
15
|
return true;
|
|
16
16
|
}
|
|
17
|
-
return
|
|
18
|
-
(error.kind === "sql_query" || error.kind === "sql_connection"));
|
|
17
|
+
return "kind" in error && (error.kind === "sql_query" || error.kind === "sql_connection");
|
|
19
18
|
};
|
|
20
19
|
export const toPrismaError = (error) => {
|
|
21
20
|
const original = Redacted.make(error);
|
|
22
21
|
if ("kind" in error && error.kind === "sql_query") {
|
|
23
22
|
return new PrismaError({
|
|
24
23
|
reason: new PrismaQueryFailure({
|
|
25
|
-
sqlState: error.sqlState,
|
|
26
|
-
constraint: error.constraint,
|
|
27
|
-
table: error.table,
|
|
28
24
|
column: error.column,
|
|
25
|
+
constraint: error.constraint,
|
|
29
26
|
original,
|
|
27
|
+
sqlState: error.sqlState,
|
|
28
|
+
table: error.table,
|
|
30
29
|
}),
|
|
31
30
|
});
|
|
32
31
|
}
|
|
33
32
|
if ("kind" in error && error.kind === "sql_connection") {
|
|
34
33
|
return new PrismaError({
|
|
35
34
|
reason: new PrismaConnectionFailure({
|
|
36
|
-
transient: error.transient,
|
|
37
35
|
original,
|
|
36
|
+
transient: error.transient,
|
|
38
37
|
}),
|
|
39
38
|
});
|
|
40
39
|
}
|
package/dist/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAG/E;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAM3E;CAAG;AAEL,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAGrF;CAAG;AAIL,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAgBL,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAA0B,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAe,EAAE;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACnD,OAAO,IAAI,WAAW,CAAC;YACtB,MAAM,EAAE,IAAI,kBAAkB,CAAC;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ;gBACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;aAClB,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACxD,OAAO,IAAI,WAAW,CAAC;YACtB,MAAM,EAAE,IAAI,uBAAuB,CAAC;gBACnC,QAAQ;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS;aAC1B,CAAC;SACF,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,WAAW,CAAC;QACtB,MAAM,EAAE,IAAI,oBAAoB,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ;SACR,CAAC;KACF,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { all, and, not, or } from "@prisma-next/sql-orm-client";
|
|
2
|
-
export { type AnyDatabase, type DatabaseDefinition, type DatabaseLayerOptions, type DatabaseService, type DatabaseServiceOf, makeDatabase, } from "./database.
|
|
3
|
-
export { PrismaConnectionFailure, PrismaError, type PrismaErrorReason, PrismaQueryFailure, PrismaRuntimeFailure, } from "./error.
|
|
4
|
-
export type { Relation } from "./relation.
|
|
2
|
+
export { type AnyDatabase, type DatabaseDefinition, type DatabaseLayerOptions, type DatabaseService, type DatabaseServiceOf, makeDatabase, } from "./database.ts";
|
|
3
|
+
export { PrismaConnectionFailure, PrismaError, type PrismaErrorReason, PrismaQueryFailure, PrismaRuntimeFailure, } from "./error.ts";
|
|
4
|
+
export type { Relation } from "./relation.ts";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RuntimeConnection, RuntimeTransaction } from "@prisma-next/sql-runtime";
|
|
2
|
+
export type SettledConnection = Pick<RuntimeConnection, "destroy" | "release">;
|
|
3
|
+
export type SettledTransaction = Pick<RuntimeTransaction, "commit" | "rollback">;
|
|
4
|
+
interface Settled {
|
|
5
|
+
readonly connection: SettledConnection;
|
|
6
|
+
readonly transaction: SettledTransaction;
|
|
7
|
+
}
|
|
8
|
+
export declare const settleConnection: (settled: Settled, commitTransaction: boolean) => Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=transaction-settlement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-settlement.d.ts","sourceRoot":"","sources":["../../../src/internal/adapters/transaction-settlement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAC/E,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;AAEjF,UAAU,OAAO;IAChB,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;CACzC;AAsDD,eAAO,MAAM,gBAAgB,GAAU,SAAS,OAAO,EAAE,mBAAmB,OAAO,KAAG,OAAO,CAAC,IAAI,CAOjG,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const runtimeFailure = (code, cause, details) => Object.assign(new Error(code, { cause }), { code, ...details });
|
|
2
|
+
class ConnectionDisposal {
|
|
3
|
+
disposed = false;
|
|
4
|
+
connection;
|
|
5
|
+
constructor(connection) {
|
|
6
|
+
this.connection = connection;
|
|
7
|
+
}
|
|
8
|
+
async destroy(reason) {
|
|
9
|
+
if (this.disposed) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
this.disposed = true;
|
|
13
|
+
await this.connection.destroy(reason).catch(() => undefined);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const commit = async ({ transaction }, disposal) => {
|
|
17
|
+
try {
|
|
18
|
+
await transaction.commit();
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
catch (commitError) {
|
|
22
|
+
await transaction.rollback().catch(() => disposal.destroy(commitError));
|
|
23
|
+
return runtimeFailure("RUNTIME.TRANSACTION_COMMIT_FAILED", commitError);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const rollback = async ({ transaction }, disposal) => {
|
|
27
|
+
try {
|
|
28
|
+
await transaction.rollback();
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
catch (rollbackError) {
|
|
32
|
+
await disposal.destroy(rollbackError);
|
|
33
|
+
return runtimeFailure("RUNTIME.TRANSACTION_ROLLBACK_FAILED", rollbackError);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const release = async ({ connection }, disposal, failure) => {
|
|
37
|
+
if (disposal.disposed) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
await connection.release();
|
|
42
|
+
}
|
|
43
|
+
catch (releaseError) {
|
|
44
|
+
await disposal.destroy(releaseError);
|
|
45
|
+
throw failure === undefined ? releaseError : runtimeFailure("RUNTIME.TRANSACTION_RELEASE_FAILED", failure, { releaseError });
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export const settleConnection = async (settled, commitTransaction) => {
|
|
49
|
+
const disposal = new ConnectionDisposal(settled.connection);
|
|
50
|
+
const failure = commitTransaction ? await commit(settled, disposal) : await rollback(settled, disposal);
|
|
51
|
+
await release(settled, disposal, failure);
|
|
52
|
+
if (failure !== undefined) {
|
|
53
|
+
throw failure;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=transaction-settlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-settlement.js","sourceRoot":"","sources":["../../../src/internal/adapters/transaction-settlement.ts"],"names":[],"mappings":"AAUA,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAc,EAAE,OAA2C,EAAqC,EAAE,CACvI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEjE,MAAM,kBAAkB;IACvB,QAAQ,GAAG,KAAK,CAAC;IACA,UAAU,CAAoB;IAE/C,YAAY,UAA6B;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAe;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;CACD;AAED,MAAM,MAAM,GAAG,KAAK,EAAE,EAAE,WAAW,EAAW,EAAE,QAA4B,EAAoB,EAAE;IACjG,IAAI,CAAC;QACJ,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,WAAW,EAAE,CAAC;QACtB,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACxE,OAAO,cAAc,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAE,WAAW,EAAW,EAAE,QAA4B,EAAoB,EAAE;IACnG,IAAI,CAAC;QACJ,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IAClB,CAAC;IAAC,OAAO,aAAa,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtC,OAAO,cAAc,CAAC,qCAAqC,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,EAAE,EAAE,UAAU,EAAW,EAAE,QAA4B,EAAE,OAAgB,EAAiB,EAAE;IAChH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACvB,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,oCAAoC,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9H,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgB,EAAE,iBAA0B,EAAiB,EAAE;IACrG,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxG,MAAM,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,CAAC;IACf,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface ClientLifecycle {
|
|
2
|
-
readonly connect: () => PromiseLike<unknown>;
|
|
3
2
|
readonly close: () => PromiseLike<void>;
|
|
3
|
+
readonly connect: () => PromiseLike<unknown>;
|
|
4
4
|
}
|
|
5
5
|
export declare const acquireConnectedClient: <A>(client: ClientLifecycle, initialize: () => A) => Promise<A>;
|
|
6
|
-
export declare const assertAvailableModelNames: (modelNames:
|
|
6
|
+
export declare const assertAvailableModelNames: (modelNames: readonly string[]) => void;
|
|
7
7
|
//# sourceMappingURL=client-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-lifecycle.d.ts","sourceRoot":"","sources":["../../src/internal/client-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"client-lifecycle.d.ts","sourceRoot":"","sources":["../../src/internal/client-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED,eAAO,MAAM,sBAAsB,GAAU,CAAC,EAAE,QAAQ,eAAe,EAAE,YAAY,MAAM,CAAC,KAAG,OAAO,CAAC,CAAC,CAQvG,CAAC;AAIF,eAAO,MAAM,yBAAyB,GAAI,YAAY,SAAS,MAAM,EAAE,KAAG,IAMzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-lifecycle.js","sourceRoot":"","sources":["../../src/internal/client-lifecycle.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"client-lifecycle.js","sourceRoot":"","sources":["../../src/internal/client-lifecycle.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAK,MAAuB,EAAE,UAAmB,EAAc,EAAE;IAC3G,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,UAA6B,EAAQ,EAAE;IAChF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,yDAAyD,SAAS,EAAE,CAAC,CAAC;QAC3F,CAAC;IACF,CAAC;AACF,CAAC,CAAC"}
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Align Prisma Next's generated PostgreSQL timestamp declarations with the
|
|
3
|
-
* JavaScript Dates accepted and returned by its runtime codecs.
|
|
4
|
-
*/
|
|
5
1
|
export declare const normalizePrismaNextContractTypes: (source: string) => string;
|
|
6
2
|
//# sourceMappingURL=contract-normalization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-normalization.d.ts","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"contract-normalization.d.ts","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gCAAgC,GAAI,QAAQ,MAAM,KAAG,MAQjE,CAAC"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
const timestampReference = /\b(?:Timestamp|Timestamptz)<(?:\d+|undefined)>/
|
|
2
|
-
const timestampCodecReference = /\bCodecTypes\['pg\/(?:timestamp|timestamptz)@1'\]\['(?:input|output)'\]/
|
|
3
|
-
const unsupportedTimestampReference = /\b(?:Timestamp|Timestamptz)\s
|
|
4
|
-
|
|
5
|
-
* Align Prisma Next's generated PostgreSQL timestamp declarations with the
|
|
6
|
-
* JavaScript Dates accepted and returned by its runtime codecs.
|
|
7
|
-
*/
|
|
1
|
+
const timestampReference = /\b(?:Timestamp|Timestamptz)<(?:\d+|undefined)>/gu;
|
|
2
|
+
const timestampCodecReference = /\bCodecTypes\['pg\/(?:timestamp|timestamptz)@1'\]\['(?:input|output)'\]/gu;
|
|
3
|
+
const unsupportedTimestampReference = /\b(?:Timestamp|Timestamptz)\s*</u;
|
|
4
|
+
// Prisma Next declares PostgreSQL timestamps with types other than the JavaScript Dates its runtime codecs accept and return.
|
|
8
5
|
export const normalizePrismaNextContractTypes = (source) => {
|
|
9
|
-
const normalized = source
|
|
10
|
-
.replaceAll(timestampReference, "Date")
|
|
11
|
-
.replaceAll(timestampCodecReference, "Date");
|
|
6
|
+
const normalized = source.replaceAll(timestampReference, "Date").replaceAll(timestampCodecReference, "Date");
|
|
12
7
|
if (unsupportedTimestampReference.test(normalized)) {
|
|
13
8
|
throw new Error("Unsupported Prisma Next timestamp declaration; update effect-prisma before using this generated contract");
|
|
14
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-normalization.js","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"contract-normalization.js","sourceRoot":"","sources":["../../src/internal/contract-normalization.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,kDAAkD,CAAC;AAC9E,MAAM,uBAAuB,GAAG,2EAA2E,CAAC;AAC5G,MAAM,6BAA6B,GAAG,kCAAkC,CAAC;AAEzE,8HAA8H;AAC9H,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,MAAc,EAAU,EAAE;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAE7G,IAAI,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;IAC7H,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Context, Effect } from "effect";
|
|
2
|
+
import { type PrismaError } from "../error.ts";
|
|
3
|
+
import type { DatabaseIdentifier, DatabaseService, DefaultModels } from "./database-types.ts";
|
|
4
|
+
import type { AnySqlContract, DatabaseExecutor } from "./executor.ts";
|
|
5
|
+
import { releaseTransaction, type TransactionOrm } from "./transaction.ts";
|
|
6
|
+
export interface ActiveTransaction<Contract extends AnySqlContract, Identifier extends string> {
|
|
7
|
+
readonly executor: DatabaseExecutor<DefaultModels<Contract>, Contract>;
|
|
8
|
+
readonly facade: DatabaseService<Contract, Identifier>;
|
|
9
|
+
}
|
|
10
|
+
export interface FacadeScope<Contract extends AnySqlContract, Identifier extends string> {
|
|
11
|
+
readonly activeTransaction: Context.Reference<ActiveTransaction<Contract, Identifier> | undefined>;
|
|
12
|
+
readonly executors: WeakMap<DatabaseService<Contract, Identifier>, DatabaseExecutor<DefaultModels<Contract>, Contract>>;
|
|
13
|
+
readonly service: Context.Service<DatabaseIdentifier<Contract, Identifier>, DatabaseService<Contract, Identifier>>;
|
|
14
|
+
}
|
|
15
|
+
export declare function contractModels<Models extends object>(namespace: unknown): Models;
|
|
16
|
+
export declare const namespaceModels: <Contract extends AnySqlContract, Models extends object>(contract: Contract, namespacedOrm: TransactionOrm<Contract>) => Models;
|
|
17
|
+
export declare const runTransaction: <Contract extends AnySqlContract, Identifier extends string, A, E, R>(scope: FacadeScope<Contract, Identifier>, current: DatabaseExecutor<DefaultModels<Contract>, Contract>, currentFacade: DatabaseService<Contract, Identifier>, program: Effect.Effect<A, E, R>, release: typeof releaseTransaction, mode: "test" | "transaction", span: string) => Effect.Effect<A, E | PrismaError, Exclude<R, DatabaseIdentifier<Contract, Identifier>>>;
|
|
18
|
+
export declare function makeFacade<Contract extends AnySqlContract, Identifier extends string>(scope: FacadeScope<Contract, Identifier>, current: DatabaseExecutor<DefaultModels<Contract>, Contract>): DatabaseService<Contract, Identifier>;
|
|
19
|
+
//# sourceMappingURL=database-facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-facade.d.ts","sourceRoot":"","sources":["../../src/internal/database-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAsB,kBAAkB,EAAE,KAAK,cAAc,EAA4B,MAAM,kBAAkB,CAAC;AAEzH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM;IAC5F,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,WAAW,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM;IACtF,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;IACnG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;CACnH;AAGD,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;AAWlF,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,cAAc,EAAE,MAAM,SAAS,MAAM,EACrF,UAAU,QAAQ,EAClB,eAAe,cAAc,CAAC,QAAQ,CAAC,KACrC,MASF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACjG,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,EACxC,SAAS,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAC5D,eAAe,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,EACpD,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC/B,SAAS,OAAO,kBAAkB,EAClC,MAAM,MAAM,GAAG,aAAa,EAC5B,MAAM,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAmCxF,CAAC;AAEF,wBAAgB,UAAU,CAAC,QAAQ,SAAS,cAAc,EAAE,UAAU,SAAS,MAAM,EACpF,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,EACxC,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAC1D,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CA4CvC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { toPrismaError } from "../error.js";
|
|
3
|
+
import { assertAvailableModelNames } from "./client-lifecycle.js";
|
|
4
|
+
import { makeModelRelation } from "./relation-runtime.js";
|
|
5
|
+
import { acquireTransaction, releaseTransaction, withTransactionSemaphore } from "./transaction.js";
|
|
6
|
+
export function contractModels(namespace) {
|
|
7
|
+
return namespace;
|
|
8
|
+
}
|
|
9
|
+
function databaseFacade(facade) {
|
|
10
|
+
return facade;
|
|
11
|
+
}
|
|
12
|
+
export const namespaceModels = (contract, namespacedOrm) => {
|
|
13
|
+
const namespaces = Object.entries(contract.domain.namespaces);
|
|
14
|
+
const [only] = namespaces;
|
|
15
|
+
if (namespaces.length !== 1 || only === undefined) {
|
|
16
|
+
throw new TypeError("Effect Prisma currently requires exactly one domain namespace");
|
|
17
|
+
}
|
|
18
|
+
const [postgresSchemaOrSqliteUnbound, namespace] = only;
|
|
19
|
+
assertAvailableModelNames(Object.keys(namespace.models));
|
|
20
|
+
return contractModels(Reflect.get(namespacedOrm, postgresSchemaOrSqliteUnbound));
|
|
21
|
+
};
|
|
22
|
+
export const runTransaction = (scope, current, currentFacade, program, release, mode, span) => {
|
|
23
|
+
if (!current.liveness.open) {
|
|
24
|
+
return Effect.fail(toPrismaError({ code: current.liveness.closedCode }));
|
|
25
|
+
}
|
|
26
|
+
if (current.mode === "test" || (current.mode === "transaction" && mode === "transaction")) {
|
|
27
|
+
return Effect.provideService(program, scope.service, currentFacade);
|
|
28
|
+
}
|
|
29
|
+
if (current.mode === "transaction") {
|
|
30
|
+
return Effect.fail(toPrismaError({
|
|
31
|
+
code: "RUNTIME.TEST_TRANSACTION_INSIDE_TRANSACTION_UNSUPPORTED",
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
const transaction = Effect.acquireUseRelease(acquireTransaction(current, (transactionOrm) => namespaceModels(current.client.contract, transactionOrm), mode), (resource) => {
|
|
35
|
+
const transactionFacade = makeFacade(scope, resource.executor);
|
|
36
|
+
return program.pipe(Effect.provideService(scope.service, transactionFacade), Effect.provideService(scope.activeTransaction, {
|
|
37
|
+
executor: resource.executor,
|
|
38
|
+
facade: transactionFacade,
|
|
39
|
+
}));
|
|
40
|
+
}, release).pipe(Effect.withSpan(span, { kind: "client" }));
|
|
41
|
+
return withTransactionSemaphore(current.transactionSemaphore, transaction);
|
|
42
|
+
};
|
|
43
|
+
export function makeFacade(scope, current) {
|
|
44
|
+
let facade;
|
|
45
|
+
const resolveActiveTransaction = Effect.flatMap(scope.activeTransaction, (active) => {
|
|
46
|
+
if (current.mode === "root") {
|
|
47
|
+
return Effect.succeed(active ?? { executor: current, facade });
|
|
48
|
+
}
|
|
49
|
+
return active?.executor === current
|
|
50
|
+
? Effect.succeed(active)
|
|
51
|
+
: Effect.fail(toPrismaError({
|
|
52
|
+
code: "RUNTIME.TRANSACTION_CONTEXT_MISMATCH",
|
|
53
|
+
}));
|
|
54
|
+
});
|
|
55
|
+
const resolveExecutor = Effect.suspend(() => current.liveness.open ? Effect.map(resolveActiveTransaction, ({ executor }) => executor) : Effect.succeed(current));
|
|
56
|
+
const target = Object.create(null);
|
|
57
|
+
Object.assign(target, {
|
|
58
|
+
transaction: (program) => Effect.suspend(() => {
|
|
59
|
+
if (!current.liveness.open) {
|
|
60
|
+
return Effect.fail(toPrismaError({ code: current.liveness.closedCode }));
|
|
61
|
+
}
|
|
62
|
+
return Effect.flatMap(resolveActiveTransaction, (selected) => runTransaction(scope, selected.executor, selected.facade, program, releaseTransaction, "transaction", "prisma.transaction"));
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
facade = databaseFacade(new Proxy(target, {
|
|
66
|
+
get(target, property, receiver) {
|
|
67
|
+
if (Reflect.has(target, property)) {
|
|
68
|
+
return Reflect.get(target, property, receiver);
|
|
69
|
+
}
|
|
70
|
+
if (typeof property !== "string") {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
return makeModelRelation(current, property, resolveExecutor);
|
|
74
|
+
},
|
|
75
|
+
}));
|
|
76
|
+
scope.executors.set(facade, current);
|
|
77
|
+
return facade;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=database-facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-facade.js","sourceRoot":"","sources":["../../src/internal/database-facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { type
|
|
4
|
-
import type {
|
|
5
|
-
import type { AnySqlContract, DatabaseExecutor } from "./executor.js";
|
|
6
|
-
import { type TransactionOrm } from "./transaction.js";
|
|
7
|
-
type OrmFor<Contract extends AnySqlContract> = ReturnType<typeof orm<Contract>>;
|
|
8
|
-
type DefaultNamespaceId<Contract extends AnySqlContract> = "__unbound__" extends keyof OrmFor<Contract> ? "__unbound__" : "public" extends keyof OrmFor<Contract> ? "public" : keyof OrmFor<Contract>;
|
|
9
|
-
export type DefaultModels<Contract extends AnySqlContract> = OrmFor<Contract>[DefaultNamespaceId<Contract>] extends infer Models extends object ? Models : never;
|
|
10
|
-
type IsUnion<Value, Whole = Value> = Value extends unknown ? [Whole] extends [Value] ? false : true : never;
|
|
11
|
-
type IsSingletonString<Value extends string> = Record<never, never> extends Record<Value, never> ? false : true;
|
|
12
|
-
export type DatabaseIdentifierLiteral<Identifier extends string> = [
|
|
13
|
-
Identifier
|
|
14
|
-
] extends [`\0@shivaedev/effect-prisma/internal/${string}`] ? never : string extends Identifier ? never : true extends IsUnion<Identifier> ? never : IsSingletonString<Identifier> extends true ? Identifier : never;
|
|
15
|
-
export interface DatabaseIdentifier<Contract extends AnySqlContract, Identifier extends string> {
|
|
16
|
-
readonly _contract: (contract: Contract) => Contract;
|
|
17
|
-
readonly _databaseIdentifier: (identifier: Identifier) => Identifier;
|
|
18
|
-
}
|
|
19
|
-
type DatabaseModels<Contract extends AnySqlContract, Identifier extends string> = {
|
|
20
|
-
readonly [Model in keyof DefaultModels<Contract>]: Relation<DefaultModels<Contract>[Model], Contract, Model & string, DatabaseIdentifier<Contract, Identifier>>;
|
|
21
|
-
};
|
|
22
|
-
export type DatabaseService<Contract extends AnySqlContract, Identifier extends string> = DatabaseModels<Contract, Identifier> & {
|
|
23
|
-
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>>>;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* The driver-independent part of a database definition: the Context service
|
|
27
|
-
* carrying the typed facade. Driver entrypoints add their own `layer` options.
|
|
28
|
-
*/
|
|
29
|
-
export interface DatabaseServiceHolder<Contract extends AnySqlContract, Identifier extends string> extends Context.Service<DatabaseIdentifier<Contract, Identifier>, DatabaseService<Contract, Identifier>> {
|
|
30
|
-
}
|
|
31
|
-
export type AnyDatabase = Effect.Effect<unknown, never, unknown> & {
|
|
32
|
-
readonly layer: (...arguments_: ReadonlyArray<never>) => Layer.Any;
|
|
33
|
-
};
|
|
34
|
-
export type DatabaseServiceOf<Database extends AnyDatabase> = Effect.Success<Database>;
|
|
35
|
-
export interface SqlDatabase<Contract extends AnySqlContract, Identifier extends string, Options> extends DatabaseServiceHolder<Contract, Identifier> {
|
|
36
|
-
readonly layer: (options: Options) => Layer.Layer<DatabaseIdentifier<Contract, Identifier>, PrismaError>;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Resolve the models of the single domain namespace from a namespaced ORM
|
|
40
|
-
* client. Prisma Next namespaces PostgreSQL models under their schema and
|
|
41
|
-
* SQLite models under the unbound namespace.
|
|
42
|
-
*/
|
|
43
|
-
export declare const namespaceModels: <Contract extends AnySqlContract, Models extends object>(contract: Contract, namespacedOrm: TransactionOrm<Contract>) => Models;
|
|
44
|
-
/**
|
|
45
|
-
* Assemble the database service and its Layer around a driver-specific
|
|
46
|
-
* executor acquisition.
|
|
47
|
-
*/
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { PrismaError } from "../error.ts";
|
|
3
|
+
import { type DatabaseIdentifierLiteral, type DefaultModels, type SqlDatabase } from "./database-types.ts";
|
|
4
|
+
import type { AnySqlContract, DatabaseExecutor } from "./executor.ts";
|
|
48
5
|
export declare const makeSqlDatabase: <const Contract extends AnySqlContract, const Identifier extends string, Options>(identifier: DatabaseIdentifierLiteral<Identifier>, acquireExecutor: (options: Options) => Effect.Effect<DatabaseExecutor<DefaultModels<Contract>, Contract>, PrismaError>) => SqlDatabase<Contract, Identifier, Options>;
|
|
49
|
-
export {};
|
|
50
6
|
//# sourceMappingURL=database-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-factory.d.ts","sourceRoot":"","sources":["../../src/internal/database-factory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"database-factory.d.ts","sourceRoot":"","sources":["../../src/internal/database-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAS,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAEN,KAAK,yBAAyB,EAE9B,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMtE,eAAO,MAAM,eAAe,GAAI,KAAK,CAAC,QAAQ,SAAS,cAAc,EAAE,KAAK,CAAC,UAAU,SAAS,MAAM,EAAE,OAAO,EAC9G,YAAY,yBAAyB,CAAC,UAAU,CAAC,EACjD,iBAAiB,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,KACpH,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAgD3C,CAAC"}
|