@lokalise/prisma-utils 4.0.0 → 5.0.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/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/plugins/prismaMetricsPlugin.d.ts +1 -1
- package/dist/plugins/prismaMetricsPlugin.js +2 -2
- package/dist/plugins/prismaMetricsPlugin.js.map +1 -1
- package/dist/prismaClientFactory.d.ts +1 -1
- package/dist/prismaClientFactory.js +0 -1
- package/dist/prismaClientFactory.js.map +1 -1
- package/dist/prismaTransaction.d.ts +1 -1
- package/dist/prismaTransaction.js +4 -4
- package/dist/prismaTransaction.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +21 -16
package/dist/errors/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './prismaError.
|
|
1
|
+
export * from './prismaError.ts';
|
package/dist/errors/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./prismaError.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
1
|
+
export * from './errors/index.ts';
|
|
2
|
+
export { type PrismaMetricsPluginOptions, prismaMetricsPlugin, } from './plugins/prismaMetricsPlugin.ts';
|
|
3
|
+
export { prismaClientFactory } from './prismaClientFactory.ts';
|
|
4
|
+
export { prismaTransaction } from './prismaTransaction.ts';
|
|
5
|
+
export type * from './types.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export {
|
|
3
|
-
export { prismaClientFactory } from
|
|
4
|
-
export {
|
|
1
|
+
export * from "./errors/index.js";
|
|
2
|
+
export { prismaMetricsPlugin, } from "./plugins/prismaMetricsPlugin.js";
|
|
3
|
+
export { prismaClientFactory } from "./prismaClientFactory.js";
|
|
4
|
+
export { prismaTransaction } from "./prismaTransaction.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAEL,mBAAmB,GACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FastifyPluginCallback } from 'fastify';
|
|
2
2
|
import 'fastify-metrics';
|
|
3
3
|
import type { PrismaClient } from '@prisma/client';
|
|
4
|
-
import type { MetricCollectorOptions } from './MetricsCollector.
|
|
4
|
+
import type { MetricCollectorOptions } from './MetricsCollector.ts';
|
|
5
5
|
declare module 'fastify' {
|
|
6
6
|
interface FastifyInstance {
|
|
7
7
|
prismaMetrics: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'fastify-metrics';
|
|
2
2
|
import fp from 'fastify-plugin';
|
|
3
|
-
import { PromiseBasedCollectionScheduler } from
|
|
4
|
-
import { MetricsCollector } from
|
|
3
|
+
import { PromiseBasedCollectionScheduler } from "./CollectionScheduler.js";
|
|
4
|
+
import { MetricsCollector } from "./MetricsCollector.js";
|
|
5
5
|
function plugin(fastify, pluginOptions, next) {
|
|
6
6
|
if (!fastify.metrics) {
|
|
7
7
|
return next(new Error('No Prometheus Client found, Prisma metrics plugin requires `fastify-metrics` plugin to be registered'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismaMetricsPlugin.js","sourceRoot":"","sources":["../../src/plugins/prismaMetricsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"prismaMetricsPlugin.js","sourceRoot":"","sources":["../../src/plugins/prismaMetricsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,CAAA;AAExB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE/B,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAuBxD,SAAS,MAAM,CACb,OAAwB,EACxB,aAAyC,EACzC,IAA2B;IAE3B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CACT,IAAI,KAAK,CACP,sGAAsG,CACvG,CACF,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG;QACd,iBAAiB,EAAE;YACjB,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,IAAI;SACnB;QACD,GAAG,aAAa;QAChB,aAAa,EAAE,QAAQ;KACa,CAAA;IAEtC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,gBAAgB,CACpC,OAAO,CAAC,MAAM,EACd,OAAO,EACP,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAC/B,OAAO,CAAC,GAAG,CACZ,CAAA;QACD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC5E,IAAI,SAA8B,CAAA;QAElC,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClD,SAAS,GAAG,IAAI,+BAA+B,CAC7C,OAAO,CAAC,iBAAiB,CAAC,YAAY,EACtC,SAAS,CACV,CAAA;YAED,oDAAoD;YACpD,KAAK,SAAS,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YACpC,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,IAAI,EAAE,CAAA;YAClB,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YAChC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAA;QAEF,IAAI,EAAE,CAAA;QACN,qBAAqB;IACvB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,IAAI,CACT,GAAG,YAAY,KAAK;YAClB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,KAAK,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CACxE,CAAA;IACH,CAAC;IACD,oBAAoB;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAC9B,EAAE,CAA6B,MAAM,EAAE;IACrC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,uBAAuB;CAC9B,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Prisma, PrismaClient } from '@prisma/client';
|
|
2
|
-
import type { PrismaClientFactoryOptions } from './types.
|
|
2
|
+
import type { PrismaClientFactoryOptions } from './types.ts';
|
|
3
3
|
type PrismaClientConstructor<P extends PrismaClient> = new (options: Prisma.PrismaClientOptions) => P;
|
|
4
4
|
export declare const prismaClientFactory: <P extends PrismaClient>(PrismaClient: PrismaClientConstructor<P>, options?: PrismaClientFactoryOptions) => P;
|
|
5
5
|
export {};
|
|
@@ -6,7 +6,6 @@ export const prismaClientFactory = (PrismaClient, options = {}) => {
|
|
|
6
6
|
...defaultOptions.transactionOptions,
|
|
7
7
|
...options.transactionOptions,
|
|
8
8
|
};
|
|
9
|
-
//@ts-expect-error - ReadCommitted is not accepted by Prisma atm
|
|
10
9
|
return new PrismaClient(options);
|
|
11
10
|
};
|
|
12
11
|
//# sourceMappingURL=prismaClientFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismaClientFactory.js","sourceRoot":"","sources":["../src/prismaClientFactory.ts"],"names":[],"mappings":"AAGA,MAAM,cAAc,GAA+B;IACjD,kBAAkB,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;CACxD,CAAA;AAMD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,YAAwC,EACxC,UAAsC,EAAE,EACrC,EAAE;IACL,OAAO,CAAC,kBAAkB,GAAG;QAC3B,GAAG,cAAc,CAAC,kBAAkB;QACpC,GAAG,OAAO,CAAC,kBAAkB;KAC9B,CAAA;IAED,
|
|
1
|
+
{"version":3,"file":"prismaClientFactory.js","sourceRoot":"","sources":["../src/prismaClientFactory.ts"],"names":[],"mappings":"AAGA,MAAM,cAAc,GAA+B;IACjD,kBAAkB,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;CACxD,CAAA;AAMD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,YAAwC,EACxC,UAAsC,EAAE,EACrC,EAAE;IACL,OAAO,CAAC,kBAAkB,GAAG;QAC3B,GAAG,cAAc,CAAC,kBAAkB;QACpC,GAAG,OAAO,CAAC,kBAAkB;KAC9B,CAAA;IAED,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
2
|
import type { Prisma, PrismaClient } from '@prisma/client';
|
|
3
3
|
import type * as runtime from '@prisma/client/runtime/library';
|
|
4
|
-
import type { PrismaTransactionBasicOptions, PrismaTransactionFn, PrismaTransactionOptions } from './types.
|
|
4
|
+
import type { PrismaTransactionBasicOptions, PrismaTransactionFn, PrismaTransactionOptions } from './types.ts';
|
|
5
5
|
/**
|
|
6
6
|
* Perform a Prisma DB transaction with automatic retries if needed.
|
|
7
7
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { setTimeout } from 'node:timers/promises';
|
|
2
2
|
import { deepClone } from '@lokalise/node-core';
|
|
3
|
-
import { isCockroachDBRetryTransaction } from
|
|
4
|
-
import {
|
|
3
|
+
import { isCockroachDBRetryTransaction } from "./errors/cockroachdbError.js";
|
|
4
|
+
import { isPrismaClientKnownRequestError, isPrismaTransactionClosedError, PRISMA_SERIALIZATION_ERROR, PRISMA_SERVER_CLOSED_CONNECTION_ERROR, PRISMA_TRANSACTION_ERROR, } from "./errors/prismaError.js";
|
|
5
5
|
const DEFAULT_OPTIONS = {
|
|
6
6
|
retriesAllowed: 2, // first try + 2 retries = 3 tries
|
|
7
7
|
dbDriver: 'CockroachDb',
|
|
@@ -21,7 +21,7 @@ const DEFAULT_OPTIONS = {
|
|
|
21
21
|
*/
|
|
22
22
|
export const prismaTransaction = (async (prisma, arg, options) => {
|
|
23
23
|
let optionsWithDefaults = { ...DEFAULT_OPTIONS, ...options };
|
|
24
|
-
let result
|
|
24
|
+
let result;
|
|
25
25
|
let retries = 0;
|
|
26
26
|
do {
|
|
27
27
|
if (retries > 0) {
|
|
@@ -44,7 +44,7 @@ export const prismaTransaction = (async (prisma, arg, options) => {
|
|
|
44
44
|
const executeTransactionTry = async (prisma, arg, options) => {
|
|
45
45
|
try {
|
|
46
46
|
return {
|
|
47
|
-
// @ts-
|
|
47
|
+
// @ts-expect-error
|
|
48
48
|
result: await prisma.$transaction(arg, options),
|
|
49
49
|
};
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismaTransaction.js","sourceRoot":"","sources":["../src/prismaTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"prismaTransaction.js","sourceRoot":"","sources":["../src/prismaTransaction.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
2
|
import type { Prisma } from '@prisma/client';
|
|
3
3
|
import type * as runtime from '@prisma/client/runtime/library';
|
|
4
|
-
import type { CockroachDbIsolationLevel } from './isolation_level/isolationLevel.
|
|
4
|
+
import type { CockroachDbIsolationLevel } from './isolation_level/isolationLevel.ts';
|
|
5
5
|
type ObjectValues<T> = T[keyof T];
|
|
6
6
|
export declare const DbDriverEnum: {
|
|
7
7
|
readonly COCKROACHDB: "CockroachDb";
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lokalise/prisma-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"files": [
|
|
6
|
+
"files": [
|
|
7
|
+
"dist",
|
|
8
|
+
"README.md",
|
|
9
|
+
"LICENSE.md"
|
|
10
|
+
],
|
|
7
11
|
"main": "./dist/index.js",
|
|
8
12
|
"exports": {
|
|
9
13
|
".": "./dist/index.js",
|
|
@@ -22,35 +26,36 @@
|
|
|
22
26
|
"docker:start:ci": "docker compose up -d cockroachdb",
|
|
23
27
|
"db:migration:dev": "prisma migrate dev",
|
|
24
28
|
"db:update-client": "prisma generate",
|
|
25
|
-
"db:wait": "while ! echo \"SELECT 1;\" | prisma db execute --stdin; do sleep 1; done",
|
|
29
|
+
"db:wait": "while ! echo \"SELECT 1;\" | prisma db execute --stdin --schema prisma/schema.prisma; do sleep 1; done",
|
|
26
30
|
"test": "vitest run",
|
|
27
31
|
"test:migrate": "cross-env NODE_ENV=test prisma migrate reset --force",
|
|
28
32
|
"pretest:ci": "npm run docker:start:ci && npm run db:wait && npm run test:migrate",
|
|
29
|
-
"test:ci": "npm run test
|
|
33
|
+
"test:ci": "npm run test",
|
|
30
34
|
"test:ci:teardown": "docker compose down",
|
|
31
35
|
"prepublishOnly": "npm run build",
|
|
32
36
|
"package-version": "echo $npm_package_version",
|
|
33
37
|
"postversion": "biome check --write package.json"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
|
-
"@lokalise/node-core": "^
|
|
40
|
+
"@lokalise/node-core": "^14.4.2"
|
|
37
41
|
},
|
|
38
42
|
"peerDependencies": {
|
|
39
43
|
"@prisma/client": ">=5.0.0 <7.0.0",
|
|
40
44
|
"prisma": ">=5.0.0 <7.0.0"
|
|
41
45
|
},
|
|
42
46
|
"devDependencies": {
|
|
43
|
-
"@biomejs/biome": "^
|
|
44
|
-
"@lokalise/biome-config": "^1.
|
|
45
|
-
"@lokalise/backend-http-client": "^
|
|
46
|
-
"@lokalise/fastify-extras": "^
|
|
47
|
-
"@lokalise/tsconfig": "^1.0
|
|
48
|
-
"@prisma/client": "
|
|
49
|
-
"@vitest/coverage-v8": "^3.
|
|
50
|
-
"cross-env": "^
|
|
51
|
-
"prisma": "
|
|
47
|
+
"@biomejs/biome": "^2.3.5",
|
|
48
|
+
"@lokalise/biome-config": "^3.1.0",
|
|
49
|
+
"@lokalise/backend-http-client": "^9.0.0",
|
|
50
|
+
"@lokalise/fastify-extras": "^30.2.1",
|
|
51
|
+
"@lokalise/tsconfig": "^1.3.0",
|
|
52
|
+
"@prisma/client": "~6.18.0",
|
|
53
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
54
|
+
"cross-env": "^10.0.0",
|
|
55
|
+
"prisma": "~6.18.0",
|
|
52
56
|
"rimraf": "^6.0.1",
|
|
53
|
-
"typescript": "5.
|
|
54
|
-
"vitest": "^3.
|
|
57
|
+
"typescript": "5.9.3",
|
|
58
|
+
"vitest": "^3.2.4",
|
|
59
|
+
"zod": "^4.1.12"
|
|
55
60
|
}
|
|
56
61
|
}
|