@prisma-lossless/driver-adapter-utils 7.8.0-lossless.11
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/LICENSE +201 -0
- package/README.md +3 -0
- package/dist/index.d.mts +403 -0
- package/dist/index.d.ts +403 -0
- package/dist/index.js +294 -0
- package/dist/index.mjs +255 -0
- package/package.json +40 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// src/debug.ts
|
|
2
|
+
import { Debug } from "@prisma-lossless/debug";
|
|
3
|
+
|
|
4
|
+
// src/error.ts
|
|
5
|
+
var DriverAdapterError = class extends Error {
|
|
6
|
+
name = "DriverAdapterError";
|
|
7
|
+
cause;
|
|
8
|
+
constructor(payload) {
|
|
9
|
+
super(typeof payload["message"] === "string" ? payload["message"] : payload.kind);
|
|
10
|
+
this.cause = payload;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
function isDriverAdapterError(error) {
|
|
14
|
+
return error["name"] === "DriverAdapterError" && typeof error["cause"] === "object";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/result.ts
|
|
18
|
+
function ok(value) {
|
|
19
|
+
return {
|
|
20
|
+
ok: true,
|
|
21
|
+
value,
|
|
22
|
+
map(fn) {
|
|
23
|
+
return ok(fn(value));
|
|
24
|
+
},
|
|
25
|
+
flatMap(fn) {
|
|
26
|
+
return fn(value);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function err(error) {
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
error,
|
|
34
|
+
map() {
|
|
35
|
+
return err(error);
|
|
36
|
+
},
|
|
37
|
+
flatMap() {
|
|
38
|
+
return err(error);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/binder.ts
|
|
44
|
+
var debug = Debug("driver-adapter-utils");
|
|
45
|
+
var ErrorRegistryInternal = class {
|
|
46
|
+
registeredErrors = [];
|
|
47
|
+
consumeError(id) {
|
|
48
|
+
return this.registeredErrors[id];
|
|
49
|
+
}
|
|
50
|
+
registerNewError(error) {
|
|
51
|
+
let i = 0;
|
|
52
|
+
while (this.registeredErrors[i] !== void 0) {
|
|
53
|
+
i++;
|
|
54
|
+
}
|
|
55
|
+
this.registeredErrors[i] = { error };
|
|
56
|
+
return i;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
function copySymbolsFromSource(source, target) {
|
|
60
|
+
const symbols = Object.getOwnPropertySymbols(source);
|
|
61
|
+
const symbolObject = Object.fromEntries(symbols.map((symbol) => [symbol, true]));
|
|
62
|
+
Object.assign(target, symbolObject);
|
|
63
|
+
}
|
|
64
|
+
var bindMigrationAwareSqlAdapterFactory = (adapterFactory) => {
|
|
65
|
+
const errorRegistry = new ErrorRegistryInternal();
|
|
66
|
+
const boundFactory = {
|
|
67
|
+
adapterName: adapterFactory.adapterName,
|
|
68
|
+
provider: adapterFactory.provider,
|
|
69
|
+
errorRegistry,
|
|
70
|
+
connect: async (...args) => {
|
|
71
|
+
const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args);
|
|
72
|
+
return ctx.map((ctx2) => bindAdapter(ctx2, errorRegistry));
|
|
73
|
+
},
|
|
74
|
+
connectToShadowDb: async (...args) => {
|
|
75
|
+
const ctx = await wrapAsync(errorRegistry, adapterFactory.connectToShadowDb.bind(adapterFactory))(...args);
|
|
76
|
+
return ctx.map((ctx2) => bindAdapter(ctx2, errorRegistry));
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
copySymbolsFromSource(adapterFactory, boundFactory);
|
|
80
|
+
return boundFactory;
|
|
81
|
+
};
|
|
82
|
+
var bindSqlAdapterFactory = (adapterFactory) => {
|
|
83
|
+
const errorRegistry = new ErrorRegistryInternal();
|
|
84
|
+
const boundFactory = {
|
|
85
|
+
adapterName: adapterFactory.adapterName,
|
|
86
|
+
provider: adapterFactory.provider,
|
|
87
|
+
errorRegistry,
|
|
88
|
+
connect: async (...args) => {
|
|
89
|
+
const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args);
|
|
90
|
+
return ctx.map((ctx2) => bindAdapter(ctx2, errorRegistry));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
copySymbolsFromSource(adapterFactory, boundFactory);
|
|
94
|
+
return boundFactory;
|
|
95
|
+
};
|
|
96
|
+
var bindAdapter = (adapter, errorRegistry = new ErrorRegistryInternal()) => {
|
|
97
|
+
const boundAdapter = {
|
|
98
|
+
adapterName: adapter.adapterName,
|
|
99
|
+
errorRegistry,
|
|
100
|
+
queryRaw: wrapAsync(errorRegistry, adapter.queryRaw.bind(adapter)),
|
|
101
|
+
executeRaw: wrapAsync(errorRegistry, adapter.executeRaw.bind(adapter)),
|
|
102
|
+
executeScript: wrapAsync(errorRegistry, adapter.executeScript.bind(adapter)),
|
|
103
|
+
dispose: wrapAsync(errorRegistry, adapter.dispose.bind(adapter)),
|
|
104
|
+
provider: adapter.provider,
|
|
105
|
+
startTransaction: async (...args) => {
|
|
106
|
+
const ctx = await wrapAsync(errorRegistry, adapter.startTransaction.bind(adapter))(...args);
|
|
107
|
+
return ctx.map((ctx2) => bindTransaction(errorRegistry, ctx2));
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
if (adapter.getConnectionInfo) {
|
|
111
|
+
boundAdapter.getConnectionInfo = wrapSync(errorRegistry, adapter.getConnectionInfo.bind(adapter));
|
|
112
|
+
}
|
|
113
|
+
return boundAdapter;
|
|
114
|
+
};
|
|
115
|
+
var bindTransaction = (errorRegistry, transaction) => {
|
|
116
|
+
const boundTransaction = {
|
|
117
|
+
adapterName: transaction.adapterName,
|
|
118
|
+
provider: transaction.provider,
|
|
119
|
+
options: transaction.options,
|
|
120
|
+
queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)),
|
|
121
|
+
executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)),
|
|
122
|
+
commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)),
|
|
123
|
+
rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction))
|
|
124
|
+
};
|
|
125
|
+
if (transaction.createSavepoint) {
|
|
126
|
+
boundTransaction.createSavepoint = wrapAsync(errorRegistry, transaction.createSavepoint.bind(transaction));
|
|
127
|
+
}
|
|
128
|
+
if (transaction.rollbackToSavepoint) {
|
|
129
|
+
boundTransaction.rollbackToSavepoint = wrapAsync(errorRegistry, transaction.rollbackToSavepoint.bind(transaction));
|
|
130
|
+
}
|
|
131
|
+
if (transaction.releaseSavepoint) {
|
|
132
|
+
boundTransaction.releaseSavepoint = wrapAsync(errorRegistry, transaction.releaseSavepoint.bind(transaction));
|
|
133
|
+
}
|
|
134
|
+
return boundTransaction;
|
|
135
|
+
};
|
|
136
|
+
function wrapAsync(registry, fn) {
|
|
137
|
+
return async (...args) => {
|
|
138
|
+
try {
|
|
139
|
+
return ok(await fn(...args));
|
|
140
|
+
} catch (error) {
|
|
141
|
+
debug("[error@wrapAsync]", error);
|
|
142
|
+
if (isDriverAdapterError(error)) {
|
|
143
|
+
return err(error.cause);
|
|
144
|
+
}
|
|
145
|
+
const id = registry.registerNewError(error);
|
|
146
|
+
return err({ kind: "GenericJs", id });
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function wrapSync(registry, fn) {
|
|
151
|
+
return (...args) => {
|
|
152
|
+
try {
|
|
153
|
+
return ok(fn(...args));
|
|
154
|
+
} catch (error) {
|
|
155
|
+
debug("[error@wrapSync]", error);
|
|
156
|
+
if (isDriverAdapterError(error)) {
|
|
157
|
+
return err(error.cause);
|
|
158
|
+
}
|
|
159
|
+
const id = registry.registerNewError(error);
|
|
160
|
+
return err({ kind: "GenericJs", id });
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// src/const.ts
|
|
166
|
+
var ColumnTypeEnum = {
|
|
167
|
+
// Scalars
|
|
168
|
+
Int32: 0,
|
|
169
|
+
Int64: 1,
|
|
170
|
+
Float: 2,
|
|
171
|
+
Double: 3,
|
|
172
|
+
Numeric: 4,
|
|
173
|
+
Boolean: 5,
|
|
174
|
+
Character: 6,
|
|
175
|
+
Text: 7,
|
|
176
|
+
Date: 8,
|
|
177
|
+
Time: 9,
|
|
178
|
+
DateTime: 10,
|
|
179
|
+
Json: 11,
|
|
180
|
+
Enum: 12,
|
|
181
|
+
Bytes: 13,
|
|
182
|
+
Set: 14,
|
|
183
|
+
Uuid: 15,
|
|
184
|
+
// Arrays
|
|
185
|
+
Int32Array: 64,
|
|
186
|
+
Int64Array: 65,
|
|
187
|
+
FloatArray: 66,
|
|
188
|
+
DoubleArray: 67,
|
|
189
|
+
NumericArray: 68,
|
|
190
|
+
BooleanArray: 69,
|
|
191
|
+
CharacterArray: 70,
|
|
192
|
+
TextArray: 71,
|
|
193
|
+
DateArray: 72,
|
|
194
|
+
TimeArray: 73,
|
|
195
|
+
DateTimeArray: 74,
|
|
196
|
+
JsonArray: 75,
|
|
197
|
+
EnumArray: 76,
|
|
198
|
+
BytesArray: 77,
|
|
199
|
+
UuidArray: 78,
|
|
200
|
+
// Custom
|
|
201
|
+
UnknownNumber: 128
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// src/mock.ts
|
|
205
|
+
var mockAdapterErrors = {
|
|
206
|
+
queryRaw: new Error("Not implemented: queryRaw"),
|
|
207
|
+
executeRaw: new Error("Not implemented: executeRaw"),
|
|
208
|
+
startTransaction: new Error("Not implemented: startTransaction"),
|
|
209
|
+
executeScript: new Error("Not implemented: executeScript"),
|
|
210
|
+
dispose: new Error("Not implemented: dispose")
|
|
211
|
+
};
|
|
212
|
+
function mockAdapter(provider) {
|
|
213
|
+
return {
|
|
214
|
+
provider,
|
|
215
|
+
adapterName: "@prisma/adapter-mock",
|
|
216
|
+
queryRaw: () => Promise.reject(mockAdapterErrors.queryRaw),
|
|
217
|
+
executeRaw: () => Promise.reject(mockAdapterErrors.executeRaw),
|
|
218
|
+
startTransaction: () => Promise.reject(mockAdapterErrors.startTransaction),
|
|
219
|
+
executeScript: () => Promise.reject(mockAdapterErrors.executeScript),
|
|
220
|
+
dispose: () => Promise.reject(mockAdapterErrors.dispose),
|
|
221
|
+
[Symbol.for("adapter.mockAdapter")]: true
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
function mockAdapterFactory(provider) {
|
|
225
|
+
return {
|
|
226
|
+
provider,
|
|
227
|
+
adapterName: "@prisma/adapter-mock",
|
|
228
|
+
connect: () => Promise.resolve(mockAdapter(provider)),
|
|
229
|
+
[Symbol.for("adapter.mockAdapterFactory")]: true
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function mockMigrationAwareAdapterFactory(provider) {
|
|
233
|
+
return {
|
|
234
|
+
provider,
|
|
235
|
+
adapterName: "@prisma/adapter-mock",
|
|
236
|
+
connect: () => Promise.resolve(mockAdapter(provider)),
|
|
237
|
+
connectToShadowDb: () => Promise.resolve(mockAdapter(provider)),
|
|
238
|
+
[Symbol.for("adapter.mockMigrationAwareAdapterFactory")]: true
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
export {
|
|
242
|
+
ColumnTypeEnum,
|
|
243
|
+
Debug,
|
|
244
|
+
DriverAdapterError,
|
|
245
|
+
bindAdapter,
|
|
246
|
+
bindMigrationAwareSqlAdapterFactory,
|
|
247
|
+
bindSqlAdapterFactory,
|
|
248
|
+
err,
|
|
249
|
+
isDriverAdapterError,
|
|
250
|
+
mockAdapter,
|
|
251
|
+
mockAdapterErrors,
|
|
252
|
+
mockAdapterFactory,
|
|
253
|
+
mockMigrationAwareAdapterFactory,
|
|
254
|
+
ok
|
|
255
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@prisma-lossless/driver-adapter-utils",
|
|
3
|
+
"version": "7.8.0-lossless.11",
|
|
4
|
+
"description": "Internal set of utilities and types for Prisma's driver adapters.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"require": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"import": {
|
|
15
|
+
"types": "./dist/index.d.mts",
|
|
16
|
+
"default": "./dist/index.mjs"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/prisma/prisma.git",
|
|
23
|
+
"directory": "packages/driver-adapter-utils"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md"
|
|
28
|
+
],
|
|
29
|
+
"keywords": [],
|
|
30
|
+
"author": "Alberto Schiabel <schiabel@prisma.io>",
|
|
31
|
+
"license": "Apache-2.0",
|
|
32
|
+
"sideEffects": false,
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@prisma-lossless/debug": "7.8.0-lossless.11"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "DEV=true tsx helpers/build.ts",
|
|
38
|
+
"build": "tsx helpers/build.ts"
|
|
39
|
+
}
|
|
40
|
+
}
|