@prisma/client-engine-runtime 7.3.0-dev.14 → 7.3.0-dev.15
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/index.d.mts +9 -8
- package/dist/index.d.ts +9 -8
- package/dist/index.js +65 -77
- package/dist/index.mjs +65 -77
- package/dist/interpreter/query-interpreter.d.ts +7 -7
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -249,30 +249,24 @@ export declare type QueryEvent = {
|
|
|
249
249
|
|
|
250
250
|
export declare class QueryInterpreter {
|
|
251
251
|
#private;
|
|
252
|
-
constructor({
|
|
252
|
+
constructor({ onQuery, tracingHelper, serializer, rawSerializer, provider, connectionInfo, }: QueryInterpreterOptions);
|
|
253
253
|
static forSql(options: {
|
|
254
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
255
|
-
placeholderValues: Record<string, unknown>;
|
|
256
254
|
onQuery?: (event: QueryEvent) => void;
|
|
257
255
|
tracingHelper: TracingHelper;
|
|
258
256
|
provider?: SchemaProvider;
|
|
259
257
|
connectionInfo?: ConnectionInfo;
|
|
260
|
-
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
261
258
|
}): QueryInterpreter;
|
|
262
|
-
run(queryPlan: QueryPlanNode,
|
|
259
|
+
run(queryPlan: QueryPlanNode, options: QueryRuntimeOptions): Promise<unknown>;
|
|
263
260
|
private interpretNode;
|
|
264
261
|
}
|
|
265
262
|
|
|
266
263
|
export declare type QueryInterpreterOptions = {
|
|
267
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
268
|
-
placeholderValues: Record<string, unknown>;
|
|
269
264
|
onQuery?: (event: QueryEvent) => void;
|
|
270
265
|
tracingHelper: TracingHelper;
|
|
271
266
|
serializer: (results: SqlResultSet) => Value;
|
|
272
267
|
rawSerializer?: (results: SqlResultSet) => Value;
|
|
273
268
|
provider?: SchemaProvider;
|
|
274
269
|
connectionInfo?: ConnectionInfo;
|
|
275
|
-
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
276
270
|
};
|
|
277
271
|
|
|
278
272
|
export declare type QueryInterpreterSqlCommenter = {
|
|
@@ -414,6 +408,13 @@ export declare type QueryPlanNode = {
|
|
|
414
408
|
};
|
|
415
409
|
};
|
|
416
410
|
|
|
411
|
+
declare type QueryRuntimeOptions = {
|
|
412
|
+
queryable: SqlQueryable;
|
|
413
|
+
transactionManager: QueryInterpreterTransactionManager;
|
|
414
|
+
scope: Record<string, unknown>;
|
|
415
|
+
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
416
|
+
};
|
|
417
|
+
|
|
417
418
|
export declare type RawResponse = {
|
|
418
419
|
columns: string[];
|
|
419
420
|
types: string[];
|
package/dist/index.d.ts
CHANGED
|
@@ -249,30 +249,24 @@ export declare type QueryEvent = {
|
|
|
249
249
|
|
|
250
250
|
export declare class QueryInterpreter {
|
|
251
251
|
#private;
|
|
252
|
-
constructor({
|
|
252
|
+
constructor({ onQuery, tracingHelper, serializer, rawSerializer, provider, connectionInfo, }: QueryInterpreterOptions);
|
|
253
253
|
static forSql(options: {
|
|
254
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
255
|
-
placeholderValues: Record<string, unknown>;
|
|
256
254
|
onQuery?: (event: QueryEvent) => void;
|
|
257
255
|
tracingHelper: TracingHelper;
|
|
258
256
|
provider?: SchemaProvider;
|
|
259
257
|
connectionInfo?: ConnectionInfo;
|
|
260
|
-
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
261
258
|
}): QueryInterpreter;
|
|
262
|
-
run(queryPlan: QueryPlanNode,
|
|
259
|
+
run(queryPlan: QueryPlanNode, options: QueryRuntimeOptions): Promise<unknown>;
|
|
263
260
|
private interpretNode;
|
|
264
261
|
}
|
|
265
262
|
|
|
266
263
|
export declare type QueryInterpreterOptions = {
|
|
267
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
268
|
-
placeholderValues: Record<string, unknown>;
|
|
269
264
|
onQuery?: (event: QueryEvent) => void;
|
|
270
265
|
tracingHelper: TracingHelper;
|
|
271
266
|
serializer: (results: SqlResultSet) => Value;
|
|
272
267
|
rawSerializer?: (results: SqlResultSet) => Value;
|
|
273
268
|
provider?: SchemaProvider;
|
|
274
269
|
connectionInfo?: ConnectionInfo;
|
|
275
|
-
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
276
270
|
};
|
|
277
271
|
|
|
278
272
|
export declare type QueryInterpreterSqlCommenter = {
|
|
@@ -414,6 +408,13 @@ export declare type QueryPlanNode = {
|
|
|
414
408
|
};
|
|
415
409
|
};
|
|
416
410
|
|
|
411
|
+
declare type QueryRuntimeOptions = {
|
|
412
|
+
queryable: SqlQueryable;
|
|
413
|
+
transactionManager: QueryInterpreterTransactionManager;
|
|
414
|
+
scope: Record<string, unknown>;
|
|
415
|
+
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
416
|
+
};
|
|
417
|
+
|
|
417
418
|
export declare type RawResponse = {
|
|
418
419
|
columns: string[];
|
|
419
420
|
types: string[];
|
package/dist/index.js
CHANGED
|
@@ -1485,8 +1485,6 @@ function getErrorCode2(error) {
|
|
|
1485
1485
|
|
|
1486
1486
|
// src/interpreter/query-interpreter.ts
|
|
1487
1487
|
var QueryInterpreter = class _QueryInterpreter {
|
|
1488
|
-
#transactionManager;
|
|
1489
|
-
#placeholderValues;
|
|
1490
1488
|
#onQuery;
|
|
1491
1489
|
#generators = new GeneratorRegistry();
|
|
1492
1490
|
#tracingHelper;
|
|
@@ -1494,76 +1492,66 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1494
1492
|
#rawSerializer;
|
|
1495
1493
|
#provider;
|
|
1496
1494
|
#connectionInfo;
|
|
1497
|
-
#sqlCommenter;
|
|
1498
1495
|
constructor({
|
|
1499
|
-
transactionManager,
|
|
1500
|
-
placeholderValues,
|
|
1501
1496
|
onQuery,
|
|
1502
1497
|
tracingHelper,
|
|
1503
1498
|
serializer,
|
|
1504
1499
|
rawSerializer,
|
|
1505
1500
|
provider,
|
|
1506
|
-
connectionInfo
|
|
1507
|
-
sqlCommenter
|
|
1501
|
+
connectionInfo
|
|
1508
1502
|
}) {
|
|
1509
|
-
this.#transactionManager = transactionManager;
|
|
1510
|
-
this.#placeholderValues = placeholderValues;
|
|
1511
1503
|
this.#onQuery = onQuery;
|
|
1512
1504
|
this.#tracingHelper = tracingHelper;
|
|
1513
1505
|
this.#serializer = serializer;
|
|
1514
1506
|
this.#rawSerializer = rawSerializer ?? serializer;
|
|
1515
1507
|
this.#provider = provider;
|
|
1516
1508
|
this.#connectionInfo = connectionInfo;
|
|
1517
|
-
this.#sqlCommenter = sqlCommenter;
|
|
1518
1509
|
}
|
|
1519
1510
|
static forSql(options) {
|
|
1520
1511
|
return new _QueryInterpreter({
|
|
1521
|
-
transactionManager: options.transactionManager,
|
|
1522
|
-
placeholderValues: options.placeholderValues,
|
|
1523
1512
|
onQuery: options.onQuery,
|
|
1524
1513
|
tracingHelper: options.tracingHelper,
|
|
1525
1514
|
serializer: serializeSql,
|
|
1526
1515
|
rawSerializer: serializeRawSql,
|
|
1527
1516
|
provider: options.provider,
|
|
1528
|
-
connectionInfo: options.connectionInfo
|
|
1529
|
-
sqlCommenter: options.sqlCommenter
|
|
1517
|
+
connectionInfo: options.connectionInfo
|
|
1530
1518
|
});
|
|
1531
1519
|
}
|
|
1532
|
-
async run(queryPlan,
|
|
1533
|
-
const { value } = await this.interpretNode(
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
this.#generators.snapshot()
|
|
1538
|
-
).catch((e) => rethrowAsUserFacing(e));
|
|
1520
|
+
async run(queryPlan, options) {
|
|
1521
|
+
const { value } = await this.interpretNode(queryPlan, {
|
|
1522
|
+
...options,
|
|
1523
|
+
generators: this.#generators.snapshot()
|
|
1524
|
+
}).catch((e) => rethrowAsUserFacing(e));
|
|
1539
1525
|
return value;
|
|
1540
1526
|
}
|
|
1541
|
-
async interpretNode(node,
|
|
1527
|
+
async interpretNode(node, context) {
|
|
1542
1528
|
switch (node.type) {
|
|
1543
1529
|
case "value": {
|
|
1544
|
-
return {
|
|
1530
|
+
return {
|
|
1531
|
+
value: evaluateArg(node.args, context.scope, context.generators)
|
|
1532
|
+
};
|
|
1545
1533
|
}
|
|
1546
1534
|
case "seq": {
|
|
1547
1535
|
let result;
|
|
1548
1536
|
for (const arg of node.args) {
|
|
1549
|
-
result = await this.interpretNode(arg,
|
|
1537
|
+
result = await this.interpretNode(arg, context);
|
|
1550
1538
|
}
|
|
1551
1539
|
return result ?? { value: void 0 };
|
|
1552
1540
|
}
|
|
1553
1541
|
case "get": {
|
|
1554
|
-
return { value: scope[node.args.name] };
|
|
1542
|
+
return { value: context.scope[node.args.name] };
|
|
1555
1543
|
}
|
|
1556
1544
|
case "let": {
|
|
1557
|
-
const nestedScope = Object.create(scope);
|
|
1545
|
+
const nestedScope = Object.create(context.scope);
|
|
1558
1546
|
for (const binding of node.args.bindings) {
|
|
1559
|
-
const { value } = await this.interpretNode(binding.expr,
|
|
1547
|
+
const { value } = await this.interpretNode(binding.expr, { ...context, scope: nestedScope });
|
|
1560
1548
|
nestedScope[binding.name] = value;
|
|
1561
1549
|
}
|
|
1562
|
-
return this.interpretNode(node.args.expr,
|
|
1550
|
+
return this.interpretNode(node.args.expr, { ...context, scope: nestedScope });
|
|
1563
1551
|
}
|
|
1564
1552
|
case "getFirstNonEmpty": {
|
|
1565
1553
|
for (const name of node.args.names) {
|
|
1566
|
-
const value = scope[name];
|
|
1554
|
+
const value = context.scope[name];
|
|
1567
1555
|
if (!isEmpty(value)) {
|
|
1568
1556
|
return { value };
|
|
1569
1557
|
}
|
|
@@ -1572,7 +1560,7 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1572
1560
|
}
|
|
1573
1561
|
case "concat": {
|
|
1574
1562
|
const parts = await Promise.all(
|
|
1575
|
-
node.args.map((arg) => this.interpretNode(arg,
|
|
1563
|
+
node.args.map((arg) => this.interpretNode(arg, context).then((res) => res.value))
|
|
1576
1564
|
);
|
|
1577
1565
|
return {
|
|
1578
1566
|
value: parts.length > 0 ? parts.reduce((acc, part) => acc.concat(asList(part)), []) : []
|
|
@@ -1580,21 +1568,21 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1580
1568
|
}
|
|
1581
1569
|
case "sum": {
|
|
1582
1570
|
const parts = await Promise.all(
|
|
1583
|
-
node.args.map((arg) => this.interpretNode(arg,
|
|
1571
|
+
node.args.map((arg) => this.interpretNode(arg, context).then((res) => res.value))
|
|
1584
1572
|
);
|
|
1585
1573
|
return {
|
|
1586
1574
|
value: parts.length > 0 ? parts.reduce((acc, part) => asNumber2(acc) + asNumber2(part)) : 0
|
|
1587
1575
|
};
|
|
1588
1576
|
}
|
|
1589
1577
|
case "execute": {
|
|
1590
|
-
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1578
|
+
const queries = renderQuery(node.args, context.scope, context.generators, this.#maxChunkSize());
|
|
1591
1579
|
let sum = 0;
|
|
1592
1580
|
for (const query of queries) {
|
|
1593
|
-
const commentedQuery =
|
|
1581
|
+
const commentedQuery = applyComments(query, context.sqlCommenter);
|
|
1594
1582
|
sum += await this.#withQuerySpanAndEvent(
|
|
1595
1583
|
commentedQuery,
|
|
1596
|
-
queryable,
|
|
1597
|
-
() => queryable.executeRaw(commentedQuery).catch(
|
|
1584
|
+
context.queryable,
|
|
1585
|
+
() => context.queryable.executeRaw(commentedQuery).catch(
|
|
1598
1586
|
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1599
1587
|
)
|
|
1600
1588
|
);
|
|
@@ -1602,14 +1590,14 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1602
1590
|
return { value: sum };
|
|
1603
1591
|
}
|
|
1604
1592
|
case "query": {
|
|
1605
|
-
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1593
|
+
const queries = renderQuery(node.args, context.scope, context.generators, this.#maxChunkSize());
|
|
1606
1594
|
let results;
|
|
1607
1595
|
for (const query of queries) {
|
|
1608
|
-
const commentedQuery =
|
|
1596
|
+
const commentedQuery = applyComments(query, context.sqlCommenter);
|
|
1609
1597
|
const result = await this.#withQuerySpanAndEvent(
|
|
1610
1598
|
commentedQuery,
|
|
1611
|
-
queryable,
|
|
1612
|
-
() => queryable.queryRaw(commentedQuery).catch(
|
|
1599
|
+
context.queryable,
|
|
1600
|
+
() => context.queryable.queryRaw(commentedQuery).catch(
|
|
1613
1601
|
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1614
1602
|
)
|
|
1615
1603
|
);
|
|
@@ -1626,11 +1614,11 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1626
1614
|
};
|
|
1627
1615
|
}
|
|
1628
1616
|
case "reverse": {
|
|
1629
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1617
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1630
1618
|
return { value: Array.isArray(value) ? value.reverse() : value, lastInsertId };
|
|
1631
1619
|
}
|
|
1632
1620
|
case "unique": {
|
|
1633
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1621
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1634
1622
|
if (!Array.isArray(value)) {
|
|
1635
1623
|
return { value, lastInsertId };
|
|
1636
1624
|
}
|
|
@@ -1640,38 +1628,38 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1640
1628
|
return { value: value[0] ?? null, lastInsertId };
|
|
1641
1629
|
}
|
|
1642
1630
|
case "required": {
|
|
1643
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1631
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1644
1632
|
if (isEmpty(value)) {
|
|
1645
1633
|
throw new Error("Required value is empty");
|
|
1646
1634
|
}
|
|
1647
1635
|
return { value, lastInsertId };
|
|
1648
1636
|
}
|
|
1649
1637
|
case "mapField": {
|
|
1650
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.records,
|
|
1638
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.records, context);
|
|
1651
1639
|
return { value: mapField2(value, node.args.field), lastInsertId };
|
|
1652
1640
|
}
|
|
1653
1641
|
case "join": {
|
|
1654
|
-
const { value: parent, lastInsertId } = await this.interpretNode(node.args.parent,
|
|
1642
|
+
const { value: parent, lastInsertId } = await this.interpretNode(node.args.parent, context);
|
|
1655
1643
|
if (parent === null) {
|
|
1656
1644
|
return { value: null, lastInsertId };
|
|
1657
1645
|
}
|
|
1658
1646
|
const children = await Promise.all(
|
|
1659
1647
|
node.args.children.map(async (joinExpr) => ({
|
|
1660
1648
|
joinExpr,
|
|
1661
|
-
childRecords: (await this.interpretNode(joinExpr.child,
|
|
1649
|
+
childRecords: (await this.interpretNode(joinExpr.child, context)).value
|
|
1662
1650
|
}))
|
|
1663
1651
|
);
|
|
1664
1652
|
return { value: attachChildrenToParents(parent, children), lastInsertId };
|
|
1665
1653
|
}
|
|
1666
1654
|
case "transaction": {
|
|
1667
|
-
if (!
|
|
1668
|
-
return this.interpretNode(node.args,
|
|
1655
|
+
if (!context.transactionManager.enabled) {
|
|
1656
|
+
return this.interpretNode(node.args, context);
|
|
1669
1657
|
}
|
|
1670
|
-
const transactionManager =
|
|
1658
|
+
const transactionManager = context.transactionManager.manager;
|
|
1671
1659
|
const transactionInfo = await transactionManager.startInternalTransaction();
|
|
1672
1660
|
const transaction = await transactionManager.getTransaction(transactionInfo, "query");
|
|
1673
1661
|
try {
|
|
1674
|
-
const value = await this.interpretNode(node.args,
|
|
1662
|
+
const value = await this.interpretNode(node.args, { ...context, queryable: transaction });
|
|
1675
1663
|
await transactionManager.commitTransaction(transactionInfo.id);
|
|
1676
1664
|
return value;
|
|
1677
1665
|
} catch (e) {
|
|
@@ -1680,49 +1668,49 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1680
1668
|
}
|
|
1681
1669
|
}
|
|
1682
1670
|
case "dataMap": {
|
|
1683
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1671
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1684
1672
|
return { value: applyDataMap(value, node.args.structure, node.args.enums), lastInsertId };
|
|
1685
1673
|
}
|
|
1686
1674
|
case "validate": {
|
|
1687
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1675
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1688
1676
|
performValidation(value, node.args.rules, node.args);
|
|
1689
1677
|
return { value, lastInsertId };
|
|
1690
1678
|
}
|
|
1691
1679
|
case "if": {
|
|
1692
|
-
const { value } = await this.interpretNode(node.args.value,
|
|
1680
|
+
const { value } = await this.interpretNode(node.args.value, context);
|
|
1693
1681
|
if (doesSatisfyRule(value, node.args.rule)) {
|
|
1694
|
-
return await this.interpretNode(node.args.then,
|
|
1682
|
+
return await this.interpretNode(node.args.then, context);
|
|
1695
1683
|
} else {
|
|
1696
|
-
return await this.interpretNode(node.args.else,
|
|
1684
|
+
return await this.interpretNode(node.args.else, context);
|
|
1697
1685
|
}
|
|
1698
1686
|
}
|
|
1699
1687
|
case "unit": {
|
|
1700
1688
|
return { value: void 0 };
|
|
1701
1689
|
}
|
|
1702
1690
|
case "diff": {
|
|
1703
|
-
const { value: from } = await this.interpretNode(node.args.from,
|
|
1704
|
-
const { value: to } = await this.interpretNode(node.args.to,
|
|
1691
|
+
const { value: from } = await this.interpretNode(node.args.from, context);
|
|
1692
|
+
const { value: to } = await this.interpretNode(node.args.to, context);
|
|
1705
1693
|
const keyGetter = (item) => item !== null ? getRecordKey(asRecord(item), node.args.fields) : null;
|
|
1706
1694
|
const toSet = new Set(asList(to).map(keyGetter));
|
|
1707
1695
|
return { value: asList(from).filter((item) => !toSet.has(keyGetter(item))) };
|
|
1708
1696
|
}
|
|
1709
1697
|
case "process": {
|
|
1710
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1698
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1711
1699
|
return { value: processRecords(value, node.args.operations), lastInsertId };
|
|
1712
1700
|
}
|
|
1713
1701
|
case "initializeRecord": {
|
|
1714
|
-
const { lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1702
|
+
const { lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1715
1703
|
const record = {};
|
|
1716
1704
|
for (const [key, initializer] of Object.entries(node.args.fields)) {
|
|
1717
|
-
record[key] = evalFieldInitializer(initializer, lastInsertId, scope, generators);
|
|
1705
|
+
record[key] = evalFieldInitializer(initializer, lastInsertId, context.scope, context.generators);
|
|
1718
1706
|
}
|
|
1719
1707
|
return { value: record, lastInsertId };
|
|
1720
1708
|
}
|
|
1721
1709
|
case "mapRecord": {
|
|
1722
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1710
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1723
1711
|
const record = value === null ? {} : asRecord(value);
|
|
1724
1712
|
for (const [key, entry] of Object.entries(node.args.fields)) {
|
|
1725
|
-
record[key] = evalFieldOperation(entry, record[key], scope, generators);
|
|
1713
|
+
record[key] = evalFieldOperation(entry, record[key], context.scope, context.generators);
|
|
1726
1714
|
}
|
|
1727
1715
|
return { value: record, lastInsertId };
|
|
1728
1716
|
}
|
|
@@ -1767,22 +1755,6 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1767
1755
|
onQuery: this.#onQuery
|
|
1768
1756
|
});
|
|
1769
1757
|
}
|
|
1770
|
-
#applyComments(query) {
|
|
1771
|
-
if (!this.#sqlCommenter || this.#sqlCommenter.plugins.length === 0) {
|
|
1772
|
-
return query;
|
|
1773
|
-
}
|
|
1774
|
-
const comment = buildSqlComment(this.#sqlCommenter.plugins, {
|
|
1775
|
-
query: this.#sqlCommenter.queryInfo,
|
|
1776
|
-
sql: query.sql
|
|
1777
|
-
});
|
|
1778
|
-
if (!comment) {
|
|
1779
|
-
return query;
|
|
1780
|
-
}
|
|
1781
|
-
return {
|
|
1782
|
-
...query,
|
|
1783
|
-
sql: appendSqlComment(query.sql, comment)
|
|
1784
|
-
};
|
|
1785
|
-
}
|
|
1786
1758
|
};
|
|
1787
1759
|
function isEmpty(value) {
|
|
1788
1760
|
if (Array.isArray(value)) {
|
|
@@ -1883,6 +1855,22 @@ function evalFieldOperation(op, value, scope, generators) {
|
|
|
1883
1855
|
assertNever(op, `Unexpected field operation type: ${op["type"]}`);
|
|
1884
1856
|
}
|
|
1885
1857
|
}
|
|
1858
|
+
function applyComments(query, sqlCommenter) {
|
|
1859
|
+
if (!sqlCommenter || sqlCommenter.plugins.length === 0) {
|
|
1860
|
+
return query;
|
|
1861
|
+
}
|
|
1862
|
+
const comment = buildSqlComment(sqlCommenter.plugins, {
|
|
1863
|
+
query: sqlCommenter.queryInfo,
|
|
1864
|
+
sql: query.sql
|
|
1865
|
+
});
|
|
1866
|
+
if (!comment) {
|
|
1867
|
+
return query;
|
|
1868
|
+
}
|
|
1869
|
+
return {
|
|
1870
|
+
...query,
|
|
1871
|
+
sql: appendSqlComment(query.sql, comment)
|
|
1872
|
+
};
|
|
1873
|
+
}
|
|
1886
1874
|
|
|
1887
1875
|
// src/raw-json-protocol.ts
|
|
1888
1876
|
var import_client_runtime_utils4 = require("@prisma/client-runtime-utils");
|
package/dist/index.mjs
CHANGED
|
@@ -1434,8 +1434,6 @@ function getErrorCode2(error) {
|
|
|
1434
1434
|
|
|
1435
1435
|
// src/interpreter/query-interpreter.ts
|
|
1436
1436
|
var QueryInterpreter = class _QueryInterpreter {
|
|
1437
|
-
#transactionManager;
|
|
1438
|
-
#placeholderValues;
|
|
1439
1437
|
#onQuery;
|
|
1440
1438
|
#generators = new GeneratorRegistry();
|
|
1441
1439
|
#tracingHelper;
|
|
@@ -1443,76 +1441,66 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1443
1441
|
#rawSerializer;
|
|
1444
1442
|
#provider;
|
|
1445
1443
|
#connectionInfo;
|
|
1446
|
-
#sqlCommenter;
|
|
1447
1444
|
constructor({
|
|
1448
|
-
transactionManager,
|
|
1449
|
-
placeholderValues,
|
|
1450
1445
|
onQuery,
|
|
1451
1446
|
tracingHelper,
|
|
1452
1447
|
serializer,
|
|
1453
1448
|
rawSerializer,
|
|
1454
1449
|
provider,
|
|
1455
|
-
connectionInfo
|
|
1456
|
-
sqlCommenter
|
|
1450
|
+
connectionInfo
|
|
1457
1451
|
}) {
|
|
1458
|
-
this.#transactionManager = transactionManager;
|
|
1459
|
-
this.#placeholderValues = placeholderValues;
|
|
1460
1452
|
this.#onQuery = onQuery;
|
|
1461
1453
|
this.#tracingHelper = tracingHelper;
|
|
1462
1454
|
this.#serializer = serializer;
|
|
1463
1455
|
this.#rawSerializer = rawSerializer ?? serializer;
|
|
1464
1456
|
this.#provider = provider;
|
|
1465
1457
|
this.#connectionInfo = connectionInfo;
|
|
1466
|
-
this.#sqlCommenter = sqlCommenter;
|
|
1467
1458
|
}
|
|
1468
1459
|
static forSql(options) {
|
|
1469
1460
|
return new _QueryInterpreter({
|
|
1470
|
-
transactionManager: options.transactionManager,
|
|
1471
|
-
placeholderValues: options.placeholderValues,
|
|
1472
1461
|
onQuery: options.onQuery,
|
|
1473
1462
|
tracingHelper: options.tracingHelper,
|
|
1474
1463
|
serializer: serializeSql,
|
|
1475
1464
|
rawSerializer: serializeRawSql,
|
|
1476
1465
|
provider: options.provider,
|
|
1477
|
-
connectionInfo: options.connectionInfo
|
|
1478
|
-
sqlCommenter: options.sqlCommenter
|
|
1466
|
+
connectionInfo: options.connectionInfo
|
|
1479
1467
|
});
|
|
1480
1468
|
}
|
|
1481
|
-
async run(queryPlan,
|
|
1482
|
-
const { value } = await this.interpretNode(
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
this.#generators.snapshot()
|
|
1487
|
-
).catch((e) => rethrowAsUserFacing(e));
|
|
1469
|
+
async run(queryPlan, options) {
|
|
1470
|
+
const { value } = await this.interpretNode(queryPlan, {
|
|
1471
|
+
...options,
|
|
1472
|
+
generators: this.#generators.snapshot()
|
|
1473
|
+
}).catch((e) => rethrowAsUserFacing(e));
|
|
1488
1474
|
return value;
|
|
1489
1475
|
}
|
|
1490
|
-
async interpretNode(node,
|
|
1476
|
+
async interpretNode(node, context) {
|
|
1491
1477
|
switch (node.type) {
|
|
1492
1478
|
case "value": {
|
|
1493
|
-
return {
|
|
1479
|
+
return {
|
|
1480
|
+
value: evaluateArg(node.args, context.scope, context.generators)
|
|
1481
|
+
};
|
|
1494
1482
|
}
|
|
1495
1483
|
case "seq": {
|
|
1496
1484
|
let result;
|
|
1497
1485
|
for (const arg of node.args) {
|
|
1498
|
-
result = await this.interpretNode(arg,
|
|
1486
|
+
result = await this.interpretNode(arg, context);
|
|
1499
1487
|
}
|
|
1500
1488
|
return result ?? { value: void 0 };
|
|
1501
1489
|
}
|
|
1502
1490
|
case "get": {
|
|
1503
|
-
return { value: scope[node.args.name] };
|
|
1491
|
+
return { value: context.scope[node.args.name] };
|
|
1504
1492
|
}
|
|
1505
1493
|
case "let": {
|
|
1506
|
-
const nestedScope = Object.create(scope);
|
|
1494
|
+
const nestedScope = Object.create(context.scope);
|
|
1507
1495
|
for (const binding of node.args.bindings) {
|
|
1508
|
-
const { value } = await this.interpretNode(binding.expr,
|
|
1496
|
+
const { value } = await this.interpretNode(binding.expr, { ...context, scope: nestedScope });
|
|
1509
1497
|
nestedScope[binding.name] = value;
|
|
1510
1498
|
}
|
|
1511
|
-
return this.interpretNode(node.args.expr,
|
|
1499
|
+
return this.interpretNode(node.args.expr, { ...context, scope: nestedScope });
|
|
1512
1500
|
}
|
|
1513
1501
|
case "getFirstNonEmpty": {
|
|
1514
1502
|
for (const name of node.args.names) {
|
|
1515
|
-
const value = scope[name];
|
|
1503
|
+
const value = context.scope[name];
|
|
1516
1504
|
if (!isEmpty(value)) {
|
|
1517
1505
|
return { value };
|
|
1518
1506
|
}
|
|
@@ -1521,7 +1509,7 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1521
1509
|
}
|
|
1522
1510
|
case "concat": {
|
|
1523
1511
|
const parts = await Promise.all(
|
|
1524
|
-
node.args.map((arg) => this.interpretNode(arg,
|
|
1512
|
+
node.args.map((arg) => this.interpretNode(arg, context).then((res) => res.value))
|
|
1525
1513
|
);
|
|
1526
1514
|
return {
|
|
1527
1515
|
value: parts.length > 0 ? parts.reduce((acc, part) => acc.concat(asList(part)), []) : []
|
|
@@ -1529,21 +1517,21 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1529
1517
|
}
|
|
1530
1518
|
case "sum": {
|
|
1531
1519
|
const parts = await Promise.all(
|
|
1532
|
-
node.args.map((arg) => this.interpretNode(arg,
|
|
1520
|
+
node.args.map((arg) => this.interpretNode(arg, context).then((res) => res.value))
|
|
1533
1521
|
);
|
|
1534
1522
|
return {
|
|
1535
1523
|
value: parts.length > 0 ? parts.reduce((acc, part) => asNumber2(acc) + asNumber2(part)) : 0
|
|
1536
1524
|
};
|
|
1537
1525
|
}
|
|
1538
1526
|
case "execute": {
|
|
1539
|
-
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1527
|
+
const queries = renderQuery(node.args, context.scope, context.generators, this.#maxChunkSize());
|
|
1540
1528
|
let sum = 0;
|
|
1541
1529
|
for (const query of queries) {
|
|
1542
|
-
const commentedQuery =
|
|
1530
|
+
const commentedQuery = applyComments(query, context.sqlCommenter);
|
|
1543
1531
|
sum += await this.#withQuerySpanAndEvent(
|
|
1544
1532
|
commentedQuery,
|
|
1545
|
-
queryable,
|
|
1546
|
-
() => queryable.executeRaw(commentedQuery).catch(
|
|
1533
|
+
context.queryable,
|
|
1534
|
+
() => context.queryable.executeRaw(commentedQuery).catch(
|
|
1547
1535
|
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1548
1536
|
)
|
|
1549
1537
|
);
|
|
@@ -1551,14 +1539,14 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1551
1539
|
return { value: sum };
|
|
1552
1540
|
}
|
|
1553
1541
|
case "query": {
|
|
1554
|
-
const queries = renderQuery(node.args, scope, generators, this.#maxChunkSize());
|
|
1542
|
+
const queries = renderQuery(node.args, context.scope, context.generators, this.#maxChunkSize());
|
|
1555
1543
|
let results;
|
|
1556
1544
|
for (const query of queries) {
|
|
1557
|
-
const commentedQuery =
|
|
1545
|
+
const commentedQuery = applyComments(query, context.sqlCommenter);
|
|
1558
1546
|
const result = await this.#withQuerySpanAndEvent(
|
|
1559
1547
|
commentedQuery,
|
|
1560
|
-
queryable,
|
|
1561
|
-
() => queryable.queryRaw(commentedQuery).catch(
|
|
1548
|
+
context.queryable,
|
|
1549
|
+
() => context.queryable.queryRaw(commentedQuery).catch(
|
|
1562
1550
|
(err) => node.args.type === "rawSql" ? rethrowAsUserFacingRawError(err) : rethrowAsUserFacing(err)
|
|
1563
1551
|
)
|
|
1564
1552
|
);
|
|
@@ -1575,11 +1563,11 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1575
1563
|
};
|
|
1576
1564
|
}
|
|
1577
1565
|
case "reverse": {
|
|
1578
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1566
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1579
1567
|
return { value: Array.isArray(value) ? value.reverse() : value, lastInsertId };
|
|
1580
1568
|
}
|
|
1581
1569
|
case "unique": {
|
|
1582
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1570
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1583
1571
|
if (!Array.isArray(value)) {
|
|
1584
1572
|
return { value, lastInsertId };
|
|
1585
1573
|
}
|
|
@@ -1589,38 +1577,38 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1589
1577
|
return { value: value[0] ?? null, lastInsertId };
|
|
1590
1578
|
}
|
|
1591
1579
|
case "required": {
|
|
1592
|
-
const { value, lastInsertId } = await this.interpretNode(node.args,
|
|
1580
|
+
const { value, lastInsertId } = await this.interpretNode(node.args, context);
|
|
1593
1581
|
if (isEmpty(value)) {
|
|
1594
1582
|
throw new Error("Required value is empty");
|
|
1595
1583
|
}
|
|
1596
1584
|
return { value, lastInsertId };
|
|
1597
1585
|
}
|
|
1598
1586
|
case "mapField": {
|
|
1599
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.records,
|
|
1587
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.records, context);
|
|
1600
1588
|
return { value: mapField2(value, node.args.field), lastInsertId };
|
|
1601
1589
|
}
|
|
1602
1590
|
case "join": {
|
|
1603
|
-
const { value: parent, lastInsertId } = await this.interpretNode(node.args.parent,
|
|
1591
|
+
const { value: parent, lastInsertId } = await this.interpretNode(node.args.parent, context);
|
|
1604
1592
|
if (parent === null) {
|
|
1605
1593
|
return { value: null, lastInsertId };
|
|
1606
1594
|
}
|
|
1607
1595
|
const children = await Promise.all(
|
|
1608
1596
|
node.args.children.map(async (joinExpr) => ({
|
|
1609
1597
|
joinExpr,
|
|
1610
|
-
childRecords: (await this.interpretNode(joinExpr.child,
|
|
1598
|
+
childRecords: (await this.interpretNode(joinExpr.child, context)).value
|
|
1611
1599
|
}))
|
|
1612
1600
|
);
|
|
1613
1601
|
return { value: attachChildrenToParents(parent, children), lastInsertId };
|
|
1614
1602
|
}
|
|
1615
1603
|
case "transaction": {
|
|
1616
|
-
if (!
|
|
1617
|
-
return this.interpretNode(node.args,
|
|
1604
|
+
if (!context.transactionManager.enabled) {
|
|
1605
|
+
return this.interpretNode(node.args, context);
|
|
1618
1606
|
}
|
|
1619
|
-
const transactionManager =
|
|
1607
|
+
const transactionManager = context.transactionManager.manager;
|
|
1620
1608
|
const transactionInfo = await transactionManager.startInternalTransaction();
|
|
1621
1609
|
const transaction = await transactionManager.getTransaction(transactionInfo, "query");
|
|
1622
1610
|
try {
|
|
1623
|
-
const value = await this.interpretNode(node.args,
|
|
1611
|
+
const value = await this.interpretNode(node.args, { ...context, queryable: transaction });
|
|
1624
1612
|
await transactionManager.commitTransaction(transactionInfo.id);
|
|
1625
1613
|
return value;
|
|
1626
1614
|
} catch (e) {
|
|
@@ -1629,49 +1617,49 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1629
1617
|
}
|
|
1630
1618
|
}
|
|
1631
1619
|
case "dataMap": {
|
|
1632
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1620
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1633
1621
|
return { value: applyDataMap(value, node.args.structure, node.args.enums), lastInsertId };
|
|
1634
1622
|
}
|
|
1635
1623
|
case "validate": {
|
|
1636
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1624
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1637
1625
|
performValidation(value, node.args.rules, node.args);
|
|
1638
1626
|
return { value, lastInsertId };
|
|
1639
1627
|
}
|
|
1640
1628
|
case "if": {
|
|
1641
|
-
const { value } = await this.interpretNode(node.args.value,
|
|
1629
|
+
const { value } = await this.interpretNode(node.args.value, context);
|
|
1642
1630
|
if (doesSatisfyRule(value, node.args.rule)) {
|
|
1643
|
-
return await this.interpretNode(node.args.then,
|
|
1631
|
+
return await this.interpretNode(node.args.then, context);
|
|
1644
1632
|
} else {
|
|
1645
|
-
return await this.interpretNode(node.args.else,
|
|
1633
|
+
return await this.interpretNode(node.args.else, context);
|
|
1646
1634
|
}
|
|
1647
1635
|
}
|
|
1648
1636
|
case "unit": {
|
|
1649
1637
|
return { value: void 0 };
|
|
1650
1638
|
}
|
|
1651
1639
|
case "diff": {
|
|
1652
|
-
const { value: from } = await this.interpretNode(node.args.from,
|
|
1653
|
-
const { value: to } = await this.interpretNode(node.args.to,
|
|
1640
|
+
const { value: from } = await this.interpretNode(node.args.from, context);
|
|
1641
|
+
const { value: to } = await this.interpretNode(node.args.to, context);
|
|
1654
1642
|
const keyGetter = (item) => item !== null ? getRecordKey(asRecord(item), node.args.fields) : null;
|
|
1655
1643
|
const toSet = new Set(asList(to).map(keyGetter));
|
|
1656
1644
|
return { value: asList(from).filter((item) => !toSet.has(keyGetter(item))) };
|
|
1657
1645
|
}
|
|
1658
1646
|
case "process": {
|
|
1659
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1647
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1660
1648
|
return { value: processRecords(value, node.args.operations), lastInsertId };
|
|
1661
1649
|
}
|
|
1662
1650
|
case "initializeRecord": {
|
|
1663
|
-
const { lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1651
|
+
const { lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1664
1652
|
const record = {};
|
|
1665
1653
|
for (const [key, initializer] of Object.entries(node.args.fields)) {
|
|
1666
|
-
record[key] = evalFieldInitializer(initializer, lastInsertId, scope, generators);
|
|
1654
|
+
record[key] = evalFieldInitializer(initializer, lastInsertId, context.scope, context.generators);
|
|
1667
1655
|
}
|
|
1668
1656
|
return { value: record, lastInsertId };
|
|
1669
1657
|
}
|
|
1670
1658
|
case "mapRecord": {
|
|
1671
|
-
const { value, lastInsertId } = await this.interpretNode(node.args.expr,
|
|
1659
|
+
const { value, lastInsertId } = await this.interpretNode(node.args.expr, context);
|
|
1672
1660
|
const record = value === null ? {} : asRecord(value);
|
|
1673
1661
|
for (const [key, entry] of Object.entries(node.args.fields)) {
|
|
1674
|
-
record[key] = evalFieldOperation(entry, record[key], scope, generators);
|
|
1662
|
+
record[key] = evalFieldOperation(entry, record[key], context.scope, context.generators);
|
|
1675
1663
|
}
|
|
1676
1664
|
return { value: record, lastInsertId };
|
|
1677
1665
|
}
|
|
@@ -1716,22 +1704,6 @@ var QueryInterpreter = class _QueryInterpreter {
|
|
|
1716
1704
|
onQuery: this.#onQuery
|
|
1717
1705
|
});
|
|
1718
1706
|
}
|
|
1719
|
-
#applyComments(query) {
|
|
1720
|
-
if (!this.#sqlCommenter || this.#sqlCommenter.plugins.length === 0) {
|
|
1721
|
-
return query;
|
|
1722
|
-
}
|
|
1723
|
-
const comment = buildSqlComment(this.#sqlCommenter.plugins, {
|
|
1724
|
-
query: this.#sqlCommenter.queryInfo,
|
|
1725
|
-
sql: query.sql
|
|
1726
|
-
});
|
|
1727
|
-
if (!comment) {
|
|
1728
|
-
return query;
|
|
1729
|
-
}
|
|
1730
|
-
return {
|
|
1731
|
-
...query,
|
|
1732
|
-
sql: appendSqlComment(query.sql, comment)
|
|
1733
|
-
};
|
|
1734
|
-
}
|
|
1735
1707
|
};
|
|
1736
1708
|
function isEmpty(value) {
|
|
1737
1709
|
if (Array.isArray(value)) {
|
|
@@ -1832,6 +1804,22 @@ function evalFieldOperation(op, value, scope, generators) {
|
|
|
1832
1804
|
assertNever(op, `Unexpected field operation type: ${op["type"]}`);
|
|
1833
1805
|
}
|
|
1834
1806
|
}
|
|
1807
|
+
function applyComments(query, sqlCommenter) {
|
|
1808
|
+
if (!sqlCommenter || sqlCommenter.plugins.length === 0) {
|
|
1809
|
+
return query;
|
|
1810
|
+
}
|
|
1811
|
+
const comment = buildSqlComment(sqlCommenter.plugins, {
|
|
1812
|
+
query: sqlCommenter.queryInfo,
|
|
1813
|
+
sql: query.sql
|
|
1814
|
+
});
|
|
1815
|
+
if (!comment) {
|
|
1816
|
+
return query;
|
|
1817
|
+
}
|
|
1818
|
+
return {
|
|
1819
|
+
...query,
|
|
1820
|
+
sql: appendSqlComment(query.sql, comment)
|
|
1821
|
+
};
|
|
1822
|
+
}
|
|
1835
1823
|
|
|
1836
1824
|
// src/raw-json-protocol.ts
|
|
1837
1825
|
import { Decimal as Decimal4 } from "@prisma/client-runtime-utils";
|
|
@@ -13,14 +13,17 @@ export type QueryInterpreterTransactionManager = {
|
|
|
13
13
|
enabled: false;
|
|
14
14
|
};
|
|
15
15
|
export type QueryInterpreterOptions = {
|
|
16
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
17
|
-
placeholderValues: Record<string, unknown>;
|
|
18
16
|
onQuery?: (event: QueryEvent) => void;
|
|
19
17
|
tracingHelper: TracingHelper;
|
|
20
18
|
serializer: (results: SqlResultSet) => Value;
|
|
21
19
|
rawSerializer?: (results: SqlResultSet) => Value;
|
|
22
20
|
provider?: SchemaProvider;
|
|
23
21
|
connectionInfo?: ConnectionInfo;
|
|
22
|
+
};
|
|
23
|
+
export type QueryRuntimeOptions = {
|
|
24
|
+
queryable: SqlQueryable;
|
|
25
|
+
transactionManager: QueryInterpreterTransactionManager;
|
|
26
|
+
scope: Record<string, unknown>;
|
|
24
27
|
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
25
28
|
};
|
|
26
29
|
export type QueryInterpreterSqlCommenter = {
|
|
@@ -29,16 +32,13 @@ export type QueryInterpreterSqlCommenter = {
|
|
|
29
32
|
};
|
|
30
33
|
export declare class QueryInterpreter {
|
|
31
34
|
#private;
|
|
32
|
-
constructor({
|
|
35
|
+
constructor({ onQuery, tracingHelper, serializer, rawSerializer, provider, connectionInfo, }: QueryInterpreterOptions);
|
|
33
36
|
static forSql(options: {
|
|
34
|
-
transactionManager: QueryInterpreterTransactionManager;
|
|
35
|
-
placeholderValues: Record<string, unknown>;
|
|
36
37
|
onQuery?: (event: QueryEvent) => void;
|
|
37
38
|
tracingHelper: TracingHelper;
|
|
38
39
|
provider?: SchemaProvider;
|
|
39
40
|
connectionInfo?: ConnectionInfo;
|
|
40
|
-
sqlCommenter?: QueryInterpreterSqlCommenter;
|
|
41
41
|
}): QueryInterpreter;
|
|
42
|
-
run(queryPlan: QueryPlanNode,
|
|
42
|
+
run(queryPlan: QueryPlanNode, options: QueryRuntimeOptions): Promise<unknown>;
|
|
43
43
|
private interpretNode;
|
|
44
44
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/client-engine-runtime",
|
|
3
|
-
"version": "7.3.0-dev.
|
|
3
|
+
"version": "7.3.0-dev.15",
|
|
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,10 +31,10 @@
|
|
|
31
31
|
"nanoid": "5.1.5",
|
|
32
32
|
"ulid": "3.0.0",
|
|
33
33
|
"uuid": "11.1.0",
|
|
34
|
-
"@prisma/client-runtime-utils": "7.3.0-dev.
|
|
35
|
-
"@prisma/
|
|
36
|
-
"@prisma/sqlcommenter": "7.3.0-dev.
|
|
37
|
-
"@prisma/
|
|
34
|
+
"@prisma/client-runtime-utils": "7.3.0-dev.15",
|
|
35
|
+
"@prisma/debug": "7.3.0-dev.15",
|
|
36
|
+
"@prisma/sqlcommenter": "7.3.0-dev.15",
|
|
37
|
+
"@prisma/driver-adapter-utils": "7.3.0-dev.15"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@codspeed/benchmark.js-plugin": "4.0.0",
|