@prisma/client-engine-runtime 6.14.0-dev.17 → 6.14.0-dev.19
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/QueryPlan.d.ts +2 -0
- package/dist/UserFacingError.d.ts +1 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +139 -23
- package/dist/index.mjs +138 -23
- package/dist/raw-json-protocol.d.ts +6 -0
- package/package.json +3 -3
package/dist/QueryPlan.d.ts
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -140,6 +140,8 @@ export declare const noopTracingHelper: TracingHelper;
|
|
|
140
140
|
|
|
141
141
|
export declare function normalizeJsonProtocolValues(result: unknown): unknown;
|
|
142
142
|
|
|
143
|
+
export declare function normalizeRawJsonProtocolResponse(response: RawResponse): RawResponse;
|
|
144
|
+
|
|
143
145
|
export declare type Pagination = {
|
|
144
146
|
cursor: Record<string, PrismaValue> | null;
|
|
145
147
|
take: number | null;
|
|
@@ -201,6 +203,8 @@ export declare type PrismaValueType = {
|
|
|
201
203
|
} | {
|
|
202
204
|
type: 'Array';
|
|
203
205
|
inner: PrismaValueType;
|
|
206
|
+
} | {
|
|
207
|
+
type: 'Json';
|
|
204
208
|
} | {
|
|
205
209
|
type: 'Object';
|
|
206
210
|
} | {
|
|
@@ -380,6 +384,12 @@ export declare type QueryPlanNode = {
|
|
|
380
384
|
};
|
|
381
385
|
};
|
|
382
386
|
|
|
387
|
+
export declare type RawResponse = {
|
|
388
|
+
columns: string[];
|
|
389
|
+
types: string[];
|
|
390
|
+
rows: unknown[][];
|
|
391
|
+
};
|
|
392
|
+
|
|
383
393
|
export declare type ResultNode = {
|
|
384
394
|
type: 'AffectedRows';
|
|
385
395
|
} | {
|
package/dist/index.d.ts
CHANGED
|
@@ -140,6 +140,8 @@ export declare const noopTracingHelper: TracingHelper;
|
|
|
140
140
|
|
|
141
141
|
export declare function normalizeJsonProtocolValues(result: unknown): unknown;
|
|
142
142
|
|
|
143
|
+
export declare function normalizeRawJsonProtocolResponse(response: RawResponse): RawResponse;
|
|
144
|
+
|
|
143
145
|
export declare type Pagination = {
|
|
144
146
|
cursor: Record<string, PrismaValue> | null;
|
|
145
147
|
take: number | null;
|
|
@@ -201,6 +203,8 @@ export declare type PrismaValueType = {
|
|
|
201
203
|
} | {
|
|
202
204
|
type: 'Array';
|
|
203
205
|
inner: PrismaValueType;
|
|
206
|
+
} | {
|
|
207
|
+
type: 'Json';
|
|
204
208
|
} | {
|
|
205
209
|
type: 'Object';
|
|
206
210
|
} | {
|
|
@@ -380,6 +384,12 @@ export declare type QueryPlanNode = {
|
|
|
380
384
|
};
|
|
381
385
|
};
|
|
382
386
|
|
|
387
|
+
export declare type RawResponse = {
|
|
388
|
+
columns: string[];
|
|
389
|
+
types: string[];
|
|
390
|
+
rows: unknown[][];
|
|
391
|
+
};
|
|
392
|
+
|
|
383
393
|
export declare type ResultNode = {
|
|
384
394
|
type: 'AffectedRows';
|
|
385
395
|
} | {
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,7 @@ __export(index_exports, {
|
|
|
43
43
|
isPrismaValuePlaceholder: () => isPrismaValuePlaceholder,
|
|
44
44
|
noopTracingHelper: () => noopTracingHelper,
|
|
45
45
|
normalizeJsonProtocolValues: () => normalizeJsonProtocolValues,
|
|
46
|
+
normalizeRawJsonProtocolResponse: () => normalizeRawJsonProtocolResponse,
|
|
46
47
|
safeJsonStringify: () => safeJsonStringify
|
|
47
48
|
});
|
|
48
49
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -318,8 +319,10 @@ function mapValue(value, columnName, resultType, enums) {
|
|
|
318
319
|
return values.map((v, i) => mapValue(v, `${columnName}[${i}]`, resultType.inner, enums));
|
|
319
320
|
}
|
|
320
321
|
case "Object": {
|
|
321
|
-
|
|
322
|
-
|
|
322
|
+
return { $type: "Json", value: safeJsonStringify(value) };
|
|
323
|
+
}
|
|
324
|
+
case "Json": {
|
|
325
|
+
return { $type: "Json", value: `${value}` };
|
|
323
326
|
}
|
|
324
327
|
case "Bytes": {
|
|
325
328
|
if (typeof value === "string" && value.startsWith("\\x")) {
|
|
@@ -340,7 +343,7 @@ function mapValue(value, columnName, resultType, enums) {
|
|
|
340
343
|
}
|
|
341
344
|
const enumValue = enumDef[`${value}`];
|
|
342
345
|
if (enumValue === void 0) {
|
|
343
|
-
throw new DataMapperError(`
|
|
346
|
+
throw new DataMapperError(`Value '${value}' not found in enum '${resultType.inner}'`);
|
|
344
347
|
}
|
|
345
348
|
return enumValue;
|
|
346
349
|
}
|
|
@@ -450,6 +453,16 @@ function rethrowAsUserFacing(error) {
|
|
|
450
453
|
}
|
|
451
454
|
throw new UserFacingError(message, code, { driverAdapterError: error });
|
|
452
455
|
}
|
|
456
|
+
function rethrowAsUserFacingRawError(error) {
|
|
457
|
+
if (!(0, import_driver_adapter_utils.isDriverAdapterError)(error)) {
|
|
458
|
+
throw error;
|
|
459
|
+
}
|
|
460
|
+
throw new UserFacingError(
|
|
461
|
+
`Raw query failed. Code: ${error.cause.originalCode ?? "N/A"}. Message: ${error.cause.originalMessage ?? renderErrorMessage(error)}`,
|
|
462
|
+
"P2010",
|
|
463
|
+
{ driverAdapterError: error }
|
|
464
|
+
);
|
|
465
|
+
}
|
|
453
466
|
function getErrorCode(err) {
|
|
454
467
|
switch (err.cause.kind) {
|
|
455
468
|
case "AuthenticationFailed":
|
|
@@ -991,29 +1004,90 @@ function serializeSql(resultSet) {
|
|
|
991
1004
|
);
|
|
992
1005
|
}
|
|
993
1006
|
function serializeRawSql(resultSet) {
|
|
994
|
-
const types = resultSet.columnTypes.map((type) => serializeColumnType(type));
|
|
995
|
-
const mappers = types.map((type) => {
|
|
996
|
-
switch (type) {
|
|
997
|
-
case "bytes":
|
|
998
|
-
return (value) => Array.isArray(value) ? new Uint8Array(value) : value;
|
|
999
|
-
case "int":
|
|
1000
|
-
return (value) => value === null ? null : typeof value === "number" ? value : parseInt(`${value}`, 10);
|
|
1001
|
-
case "bigint":
|
|
1002
|
-
return (value) => value === null ? null : typeof value === "bigint" ? value : BigInt(`${value}`);
|
|
1003
|
-
case "json":
|
|
1004
|
-
return (value) => typeof value === "string" ? JSON.parse(value) : value;
|
|
1005
|
-
case "bool":
|
|
1006
|
-
return (value) => typeof value === "string" ? value === "true" || value === "1" : typeof value === "number" ? value === 1 : value;
|
|
1007
|
-
default:
|
|
1008
|
-
return (value) => value;
|
|
1009
|
-
}
|
|
1010
|
-
});
|
|
1011
1007
|
return {
|
|
1012
1008
|
columns: resultSet.columnNames,
|
|
1013
1009
|
types: resultSet.columnTypes.map((type) => serializeColumnType(type)),
|
|
1014
|
-
rows: resultSet.rows.map(
|
|
1010
|
+
rows: resultSet.rows.map(
|
|
1011
|
+
(row) => row.map((value, index) => serializeRawValue(value, resultSet.columnTypes[index]))
|
|
1012
|
+
)
|
|
1015
1013
|
};
|
|
1016
1014
|
}
|
|
1015
|
+
function serializeRawValue(value, type) {
|
|
1016
|
+
if (value === null) {
|
|
1017
|
+
return null;
|
|
1018
|
+
}
|
|
1019
|
+
switch (type) {
|
|
1020
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Int32:
|
|
1021
|
+
switch (typeof value) {
|
|
1022
|
+
case "number":
|
|
1023
|
+
return Math.trunc(value);
|
|
1024
|
+
case "string":
|
|
1025
|
+
return Math.trunc(Number(value));
|
|
1026
|
+
default:
|
|
1027
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int32`);
|
|
1028
|
+
}
|
|
1029
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Int32Array:
|
|
1030
|
+
if (!Array.isArray(value)) {
|
|
1031
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int32Array`);
|
|
1032
|
+
}
|
|
1033
|
+
return value.map((v) => serializeRawValue(v, import_driver_adapter_utils2.ColumnTypeEnum.Int32));
|
|
1034
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Int64:
|
|
1035
|
+
switch (typeof value) {
|
|
1036
|
+
case "number":
|
|
1037
|
+
return BigInt(Math.trunc(value));
|
|
1038
|
+
case "string":
|
|
1039
|
+
return value;
|
|
1040
|
+
default:
|
|
1041
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int64`);
|
|
1042
|
+
}
|
|
1043
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Int64Array:
|
|
1044
|
+
if (!Array.isArray(value)) {
|
|
1045
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int64Array`);
|
|
1046
|
+
}
|
|
1047
|
+
return value.map((v) => serializeRawValue(v, import_driver_adapter_utils2.ColumnTypeEnum.Int64));
|
|
1048
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Json:
|
|
1049
|
+
switch (typeof value) {
|
|
1050
|
+
case "string":
|
|
1051
|
+
return JSON.parse(value);
|
|
1052
|
+
default:
|
|
1053
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Json`);
|
|
1054
|
+
}
|
|
1055
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.JsonArray:
|
|
1056
|
+
if (!Array.isArray(value)) {
|
|
1057
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as JsonArray`);
|
|
1058
|
+
}
|
|
1059
|
+
return value.map((v) => serializeRawValue(v, import_driver_adapter_utils2.ColumnTypeEnum.Json));
|
|
1060
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Bytes:
|
|
1061
|
+
if (Array.isArray(value)) {
|
|
1062
|
+
return new Uint8Array(value);
|
|
1063
|
+
} else {
|
|
1064
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Bytes`);
|
|
1065
|
+
}
|
|
1066
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.BytesArray:
|
|
1067
|
+
if (!Array.isArray(value)) {
|
|
1068
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as BytesArray`);
|
|
1069
|
+
}
|
|
1070
|
+
return value.map((v) => serializeRawValue(v, import_driver_adapter_utils2.ColumnTypeEnum.Bytes));
|
|
1071
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.Boolean:
|
|
1072
|
+
switch (typeof value) {
|
|
1073
|
+
case "boolean":
|
|
1074
|
+
return value;
|
|
1075
|
+
case "string":
|
|
1076
|
+
return value === "true" || value === "1";
|
|
1077
|
+
case "number":
|
|
1078
|
+
return value === 1;
|
|
1079
|
+
default:
|
|
1080
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Boolean`);
|
|
1081
|
+
}
|
|
1082
|
+
case import_driver_adapter_utils2.ColumnTypeEnum.BooleanArray:
|
|
1083
|
+
if (!Array.isArray(value)) {
|
|
1084
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as BooleanArray`);
|
|
1085
|
+
}
|
|
1086
|
+
return value.map((v) => serializeRawValue(v, import_driver_adapter_utils2.ColumnTypeEnum.Boolean));
|
|
1087
|
+
default:
|
|
1088
|
+
return value;
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1017
1091
|
function serializeColumnType(columnType) {
|
|
1018
1092
|
switch (columnType) {
|
|
1019
1093
|
case import_driver_adapter_utils2.ColumnTypeEnum.Int32:
|
|
@@ -1261,7 +1335,13 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1261
1335
|
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1262
1336
|
let sum = 0;
|
|
1263
1337
|
for (const query of queries) {
|
|
1264
|
-
sum += await this.#withQuerySpanAndEvent(
|
|
1338
|
+
sum += await this.#withQuerySpanAndEvent(
|
|
1339
|
+
query,
|
|
1340
|
+
queryable,
|
|
1341
|
+
() => queryable.executeRaw(query).catch(
|
|
1342
|
+
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1343
|
+
)
|
|
1344
|
+
);
|
|
1265
1345
|
}
|
|
1266
1346
|
return { value: sum };
|
|
1267
1347
|
}
|
|
@@ -1269,7 +1349,13 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1269
1349
|
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1270
1350
|
let results;
|
|
1271
1351
|
for (const query of queries) {
|
|
1272
|
-
const result = await this.#withQuerySpanAndEvent(
|
|
1352
|
+
const result = await this.#withQuerySpanAndEvent(
|
|
1353
|
+
query,
|
|
1354
|
+
queryable,
|
|
1355
|
+
() => queryable.queryRaw(query).catch(
|
|
1356
|
+
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1357
|
+
)
|
|
1358
|
+
);
|
|
1273
1359
|
if (results === void 0) {
|
|
1274
1360
|
results = result;
|
|
1275
1361
|
} else {
|
|
@@ -1614,6 +1700,35 @@ function mapObjectValues(object, mapper) {
|
|
|
1614
1700
|
return result;
|
|
1615
1701
|
}
|
|
1616
1702
|
|
|
1703
|
+
// src/raw-json-protocol.ts
|
|
1704
|
+
var import_decimal4 = __toESM(require("decimal.js"));
|
|
1705
|
+
function normalizeRawJsonProtocolResponse(response) {
|
|
1706
|
+
for (let i = 0; i < response.rows.length; i++) {
|
|
1707
|
+
const row = response.rows[i];
|
|
1708
|
+
for (let j = 0; j < row.length; j++) {
|
|
1709
|
+
row[j] = normalizeValue(response.types[j], row[j]);
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
return response;
|
|
1713
|
+
}
|
|
1714
|
+
function normalizeValue(type, value) {
|
|
1715
|
+
if (value === null) {
|
|
1716
|
+
return value;
|
|
1717
|
+
}
|
|
1718
|
+
switch (type) {
|
|
1719
|
+
case "bigint":
|
|
1720
|
+
return String(BigInt(value));
|
|
1721
|
+
case "decimal":
|
|
1722
|
+
return String(new import_decimal4.default(value));
|
|
1723
|
+
case "bigint-array":
|
|
1724
|
+
return value.map((v) => normalizeValue("bigint", v));
|
|
1725
|
+
case "decimal-array":
|
|
1726
|
+
return value.map((v) => normalizeValue("decimal", v));
|
|
1727
|
+
default:
|
|
1728
|
+
return value;
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1617
1732
|
// src/transactionManager/TransactionManager.ts
|
|
1618
1733
|
var import_debug = require("@prisma/debug");
|
|
1619
1734
|
|
|
@@ -1890,5 +2005,6 @@ var TransactionManager = class {
|
|
|
1890
2005
|
isPrismaValuePlaceholder,
|
|
1891
2006
|
noopTracingHelper,
|
|
1892
2007
|
normalizeJsonProtocolValues,
|
|
2008
|
+
normalizeRawJsonProtocolResponse,
|
|
1893
2009
|
safeJsonStringify
|
|
1894
2010
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -269,8 +269,10 @@ function mapValue(value, columnName, resultType, enums) {
|
|
|
269
269
|
return values.map((v, i) => mapValue(v, `${columnName}[${i}]`, resultType.inner, enums));
|
|
270
270
|
}
|
|
271
271
|
case "Object": {
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
return { $type: "Json", value: safeJsonStringify(value) };
|
|
273
|
+
}
|
|
274
|
+
case "Json": {
|
|
275
|
+
return { $type: "Json", value: `${value}` };
|
|
274
276
|
}
|
|
275
277
|
case "Bytes": {
|
|
276
278
|
if (typeof value === "string" && value.startsWith("\\x")) {
|
|
@@ -291,7 +293,7 @@ function mapValue(value, columnName, resultType, enums) {
|
|
|
291
293
|
}
|
|
292
294
|
const enumValue = enumDef[`${value}`];
|
|
293
295
|
if (enumValue === void 0) {
|
|
294
|
-
throw new DataMapperError(`
|
|
296
|
+
throw new DataMapperError(`Value '${value}' not found in enum '${resultType.inner}'`);
|
|
295
297
|
}
|
|
296
298
|
return enumValue;
|
|
297
299
|
}
|
|
@@ -401,6 +403,16 @@ function rethrowAsUserFacing(error) {
|
|
|
401
403
|
}
|
|
402
404
|
throw new UserFacingError(message, code, { driverAdapterError: error });
|
|
403
405
|
}
|
|
406
|
+
function rethrowAsUserFacingRawError(error) {
|
|
407
|
+
if (!isDriverAdapterError(error)) {
|
|
408
|
+
throw error;
|
|
409
|
+
}
|
|
410
|
+
throw new UserFacingError(
|
|
411
|
+
`Raw query failed. Code: ${error.cause.originalCode ?? "N/A"}. Message: ${error.cause.originalMessage ?? renderErrorMessage(error)}`,
|
|
412
|
+
"P2010",
|
|
413
|
+
{ driverAdapterError: error }
|
|
414
|
+
);
|
|
415
|
+
}
|
|
404
416
|
function getErrorCode(err) {
|
|
405
417
|
switch (err.cause.kind) {
|
|
406
418
|
case "AuthenticationFailed":
|
|
@@ -942,29 +954,90 @@ function serializeSql(resultSet) {
|
|
|
942
954
|
);
|
|
943
955
|
}
|
|
944
956
|
function serializeRawSql(resultSet) {
|
|
945
|
-
const types = resultSet.columnTypes.map((type) => serializeColumnType(type));
|
|
946
|
-
const mappers = types.map((type) => {
|
|
947
|
-
switch (type) {
|
|
948
|
-
case "bytes":
|
|
949
|
-
return (value) => Array.isArray(value) ? new Uint8Array(value) : value;
|
|
950
|
-
case "int":
|
|
951
|
-
return (value) => value === null ? null : typeof value === "number" ? value : parseInt(`${value}`, 10);
|
|
952
|
-
case "bigint":
|
|
953
|
-
return (value) => value === null ? null : typeof value === "bigint" ? value : BigInt(`${value}`);
|
|
954
|
-
case "json":
|
|
955
|
-
return (value) => typeof value === "string" ? JSON.parse(value) : value;
|
|
956
|
-
case "bool":
|
|
957
|
-
return (value) => typeof value === "string" ? value === "true" || value === "1" : typeof value === "number" ? value === 1 : value;
|
|
958
|
-
default:
|
|
959
|
-
return (value) => value;
|
|
960
|
-
}
|
|
961
|
-
});
|
|
962
957
|
return {
|
|
963
958
|
columns: resultSet.columnNames,
|
|
964
959
|
types: resultSet.columnTypes.map((type) => serializeColumnType(type)),
|
|
965
|
-
rows: resultSet.rows.map(
|
|
960
|
+
rows: resultSet.rows.map(
|
|
961
|
+
(row) => row.map((value, index) => serializeRawValue(value, resultSet.columnTypes[index]))
|
|
962
|
+
)
|
|
966
963
|
};
|
|
967
964
|
}
|
|
965
|
+
function serializeRawValue(value, type) {
|
|
966
|
+
if (value === null) {
|
|
967
|
+
return null;
|
|
968
|
+
}
|
|
969
|
+
switch (type) {
|
|
970
|
+
case ColumnTypeEnum.Int32:
|
|
971
|
+
switch (typeof value) {
|
|
972
|
+
case "number":
|
|
973
|
+
return Math.trunc(value);
|
|
974
|
+
case "string":
|
|
975
|
+
return Math.trunc(Number(value));
|
|
976
|
+
default:
|
|
977
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int32`);
|
|
978
|
+
}
|
|
979
|
+
case ColumnTypeEnum.Int32Array:
|
|
980
|
+
if (!Array.isArray(value)) {
|
|
981
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int32Array`);
|
|
982
|
+
}
|
|
983
|
+
return value.map((v) => serializeRawValue(v, ColumnTypeEnum.Int32));
|
|
984
|
+
case ColumnTypeEnum.Int64:
|
|
985
|
+
switch (typeof value) {
|
|
986
|
+
case "number":
|
|
987
|
+
return BigInt(Math.trunc(value));
|
|
988
|
+
case "string":
|
|
989
|
+
return value;
|
|
990
|
+
default:
|
|
991
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int64`);
|
|
992
|
+
}
|
|
993
|
+
case ColumnTypeEnum.Int64Array:
|
|
994
|
+
if (!Array.isArray(value)) {
|
|
995
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Int64Array`);
|
|
996
|
+
}
|
|
997
|
+
return value.map((v) => serializeRawValue(v, ColumnTypeEnum.Int64));
|
|
998
|
+
case ColumnTypeEnum.Json:
|
|
999
|
+
switch (typeof value) {
|
|
1000
|
+
case "string":
|
|
1001
|
+
return JSON.parse(value);
|
|
1002
|
+
default:
|
|
1003
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Json`);
|
|
1004
|
+
}
|
|
1005
|
+
case ColumnTypeEnum.JsonArray:
|
|
1006
|
+
if (!Array.isArray(value)) {
|
|
1007
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as JsonArray`);
|
|
1008
|
+
}
|
|
1009
|
+
return value.map((v) => serializeRawValue(v, ColumnTypeEnum.Json));
|
|
1010
|
+
case ColumnTypeEnum.Bytes:
|
|
1011
|
+
if (Array.isArray(value)) {
|
|
1012
|
+
return new Uint8Array(value);
|
|
1013
|
+
} else {
|
|
1014
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Bytes`);
|
|
1015
|
+
}
|
|
1016
|
+
case ColumnTypeEnum.BytesArray:
|
|
1017
|
+
if (!Array.isArray(value)) {
|
|
1018
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as BytesArray`);
|
|
1019
|
+
}
|
|
1020
|
+
return value.map((v) => serializeRawValue(v, ColumnTypeEnum.Bytes));
|
|
1021
|
+
case ColumnTypeEnum.Boolean:
|
|
1022
|
+
switch (typeof value) {
|
|
1023
|
+
case "boolean":
|
|
1024
|
+
return value;
|
|
1025
|
+
case "string":
|
|
1026
|
+
return value === "true" || value === "1";
|
|
1027
|
+
case "number":
|
|
1028
|
+
return value === 1;
|
|
1029
|
+
default:
|
|
1030
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as Boolean`);
|
|
1031
|
+
}
|
|
1032
|
+
case ColumnTypeEnum.BooleanArray:
|
|
1033
|
+
if (!Array.isArray(value)) {
|
|
1034
|
+
throw new Error(`Cannot serialize value of type ${typeof value} as BooleanArray`);
|
|
1035
|
+
}
|
|
1036
|
+
return value.map((v) => serializeRawValue(v, ColumnTypeEnum.Boolean));
|
|
1037
|
+
default:
|
|
1038
|
+
return value;
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
968
1041
|
function serializeColumnType(columnType) {
|
|
969
1042
|
switch (columnType) {
|
|
970
1043
|
case ColumnTypeEnum.Int32:
|
|
@@ -1212,7 +1285,13 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1212
1285
|
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1213
1286
|
let sum = 0;
|
|
1214
1287
|
for (const query of queries) {
|
|
1215
|
-
sum += await this.#withQuerySpanAndEvent(
|
|
1288
|
+
sum += await this.#withQuerySpanAndEvent(
|
|
1289
|
+
query,
|
|
1290
|
+
queryable,
|
|
1291
|
+
() => queryable.executeRaw(query).catch(
|
|
1292
|
+
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1293
|
+
)
|
|
1294
|
+
);
|
|
1216
1295
|
}
|
|
1217
1296
|
return { value: sum };
|
|
1218
1297
|
}
|
|
@@ -1220,7 +1299,13 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1220
1299
|
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1221
1300
|
let results;
|
|
1222
1301
|
for (const query of queries) {
|
|
1223
|
-
const result = await this.#withQuerySpanAndEvent(
|
|
1302
|
+
const result = await this.#withQuerySpanAndEvent(
|
|
1303
|
+
query,
|
|
1304
|
+
queryable,
|
|
1305
|
+
() => queryable.queryRaw(query).catch(
|
|
1306
|
+
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1307
|
+
)
|
|
1308
|
+
);
|
|
1224
1309
|
if (results === void 0) {
|
|
1225
1310
|
results = result;
|
|
1226
1311
|
} else {
|
|
@@ -1565,6 +1650,35 @@ function mapObjectValues(object, mapper) {
|
|
|
1565
1650
|
return result;
|
|
1566
1651
|
}
|
|
1567
1652
|
|
|
1653
|
+
// src/raw-json-protocol.ts
|
|
1654
|
+
import Decimal4 from "decimal.js";
|
|
1655
|
+
function normalizeRawJsonProtocolResponse(response) {
|
|
1656
|
+
for (let i = 0; i < response.rows.length; i++) {
|
|
1657
|
+
const row = response.rows[i];
|
|
1658
|
+
for (let j = 0; j < row.length; j++) {
|
|
1659
|
+
row[j] = normalizeValue(response.types[j], row[j]);
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
return response;
|
|
1663
|
+
}
|
|
1664
|
+
function normalizeValue(type, value) {
|
|
1665
|
+
if (value === null) {
|
|
1666
|
+
return value;
|
|
1667
|
+
}
|
|
1668
|
+
switch (type) {
|
|
1669
|
+
case "bigint":
|
|
1670
|
+
return String(BigInt(value));
|
|
1671
|
+
case "decimal":
|
|
1672
|
+
return String(new Decimal4(value));
|
|
1673
|
+
case "bigint-array":
|
|
1674
|
+
return value.map((v) => normalizeValue("bigint", v));
|
|
1675
|
+
case "decimal-array":
|
|
1676
|
+
return value.map((v) => normalizeValue("decimal", v));
|
|
1677
|
+
default:
|
|
1678
|
+
return value;
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1568
1682
|
// src/transactionManager/TransactionManager.ts
|
|
1569
1683
|
import { Debug } from "@prisma/debug";
|
|
1570
1684
|
|
|
@@ -1840,5 +1954,6 @@ export {
|
|
|
1840
1954
|
isPrismaValuePlaceholder,
|
|
1841
1955
|
noopTracingHelper,
|
|
1842
1956
|
normalizeJsonProtocolValues,
|
|
1957
|
+
normalizeRawJsonProtocolResponse,
|
|
1843
1958
|
safeJsonStringify
|
|
1844
1959
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/client-engine-runtime",
|
|
3
|
-
"version": "6.14.0-dev.
|
|
3
|
+
"version": "6.14.0-dev.19",
|
|
4
4
|
"description": "This package is intended for Prisma's internal use",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"nanoid": "5.1.5",
|
|
32
32
|
"ulid": "3.0.0",
|
|
33
33
|
"uuid": "11.1.0",
|
|
34
|
-
"@prisma/debug": "6.14.0-dev.
|
|
35
|
-
"@prisma/driver-adapter-utils": "6.14.0-dev.
|
|
34
|
+
"@prisma/debug": "6.14.0-dev.19",
|
|
35
|
+
"@prisma/driver-adapter-utils": "6.14.0-dev.19"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/jest": "29.5.14",
|