@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/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
+ }