faire-auth 1.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.
Files changed (221) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +34 -0
  3. package/dist/access-B5bBI4uT.mjs +39 -0
  4. package/dist/access-Crt-IJ2P.cjs +51 -0
  5. package/dist/adapter-factory-BXei1QRX.mjs +881 -0
  6. package/dist/adapter-factory-DT-_2aHJ.cjs +893 -0
  7. package/dist/adapters/drizzle-adapter/index.cjs +208 -0
  8. package/dist/adapters/drizzle-adapter/index.d.cts +48 -0
  9. package/dist/adapters/drizzle-adapter/index.d.mts +48 -0
  10. package/dist/adapters/drizzle-adapter/index.mjs +207 -0
  11. package/dist/adapters/index.cjs +23 -0
  12. package/dist/adapters/index.d.cts +157 -0
  13. package/dist/adapters/index.d.mts +157 -0
  14. package/dist/adapters/index.mjs +17 -0
  15. package/dist/adapters/kysely-adapter/index.cjs +11 -0
  16. package/dist/adapters/kysely-adapter/index.d.cts +52 -0
  17. package/dist/adapters/kysely-adapter/index.d.mts +52 -0
  18. package/dist/adapters/kysely-adapter/index.mjs +9 -0
  19. package/dist/adapters/memory-adapter/index.cjs +9 -0
  20. package/dist/adapters/memory-adapter/index.d.cts +15 -0
  21. package/dist/adapters/memory-adapter/index.d.mts +15 -0
  22. package/dist/adapters/memory-adapter/index.mjs +9 -0
  23. package/dist/adapters/mongodb-adapter/index.cjs +9 -0
  24. package/dist/adapters/mongodb-adapter/index.d.cts +4 -0
  25. package/dist/adapters/mongodb-adapter/index.d.mts +4 -0
  26. package/dist/adapters/mongodb-adapter/index.mjs +9 -0
  27. package/dist/adapters/prisma-adapter/index.cjs +156 -0
  28. package/dist/adapters/prisma-adapter/index.d.cts +35 -0
  29. package/dist/adapters/prisma-adapter/index.d.mts +35 -0
  30. package/dist/adapters/prisma-adapter/index.mjs +155 -0
  31. package/dist/adapters/test.cjs +797 -0
  32. package/dist/adapters/test.d.cts +82 -0
  33. package/dist/adapters/test.d.mts +82 -0
  34. package/dist/adapters/test.mjs +793 -0
  35. package/dist/api/index.cjs +20 -0
  36. package/dist/api/index.d.cts +3 -0
  37. package/dist/api/index.d.mts +3 -0
  38. package/dist/api/index.mjs +20 -0
  39. package/dist/api/middleware/index.cjs +16 -0
  40. package/dist/api/middleware/index.d.cts +16 -0
  41. package/dist/api/middleware/index.d.mts +16 -0
  42. package/dist/api/middleware/index.mjs +11 -0
  43. package/dist/api-Bm89BLgN.cjs +1899 -0
  44. package/dist/api-_B7qO28y.mjs +1892 -0
  45. package/dist/auth-Bo9PDt5j.cjs +739 -0
  46. package/dist/auth-Ds4AG4h4.mjs +709 -0
  47. package/dist/bearer-0SeEmaS4.mjs +54 -0
  48. package/dist/bearer-CHeREcGT.cjs +60 -0
  49. package/dist/bun-sqlite-dialect-CfkBo2v5.mjs +155 -0
  50. package/dist/bun-sqlite-dialect-wuaC2-gh.cjs +156 -0
  51. package/dist/chunk-Ceigfy4P.mjs +39 -0
  52. package/dist/chunk-oakRccI5.cjs +60 -0
  53. package/dist/client/index.cjs +22 -0
  54. package/dist/client/index.d.cts +8 -0
  55. package/dist/client/index.d.mts +8 -0
  56. package/dist/client/index.mjs +19 -0
  57. package/dist/client/lynx/index.cjs +79 -0
  58. package/dist/client/lynx/index.d.cts +156 -0
  59. package/dist/client/lynx/index.d.mts +156 -0
  60. package/dist/client/lynx/index.mjs +76 -0
  61. package/dist/client/plugins/index.cjs +11 -0
  62. package/dist/client/plugins/index.d.cts +17 -0
  63. package/dist/client/plugins/index.d.mts +17 -0
  64. package/dist/client/plugins/index.mjs +10 -0
  65. package/dist/client/react/index.cjs +79 -0
  66. package/dist/client/react/index.d.cts +156 -0
  67. package/dist/client/react/index.d.mts +156 -0
  68. package/dist/client/react/index.mjs +76 -0
  69. package/dist/client/solid/index.cjs +51 -0
  70. package/dist/client/solid/index.d.cts +90 -0
  71. package/dist/client/solid/index.d.mts +90 -0
  72. package/dist/client/solid/index.mjs +50 -0
  73. package/dist/client/svelte/index.cjs +28 -0
  74. package/dist/client/svelte/index.d.cts +110 -0
  75. package/dist/client/svelte/index.d.mts +110 -0
  76. package/dist/client/svelte/index.mjs +28 -0
  77. package/dist/client/vue/index.cjs +68 -0
  78. package/dist/client/vue/index.d.cts +123 -0
  79. package/dist/client/vue/index.d.mts +123 -0
  80. package/dist/client/vue/index.mjs +67 -0
  81. package/dist/cookies-B5xeA6i8.cjs +456 -0
  82. package/dist/cookies-Ch1JfQIz.mjs +367 -0
  83. package/dist/crypto/index.cjs +11 -0
  84. package/dist/crypto/index.d.cts +22 -0
  85. package/dist/crypto/index.d.mts +22 -0
  86. package/dist/crypto/index.mjs +5 -0
  87. package/dist/crypto-CcTxYH82.cjs +57 -0
  88. package/dist/crypto-CyQRFtkq.mjs +41 -0
  89. package/dist/db/index.cjs +40 -0
  90. package/dist/db/index.d.cts +4 -0
  91. package/dist/db/index.d.mts +4 -0
  92. package/dist/db/index.mjs +16 -0
  93. package/dist/db-BTKyYu-_.cjs +1180 -0
  94. package/dist/db-xiJtoDgz.mjs +1119 -0
  95. package/dist/defu-B0Svx_x4.cjs +34 -0
  96. package/dist/defu-SZkpHhbR.mjs +28 -0
  97. package/dist/email-verification-C-AsfJsb.cjs +247 -0
  98. package/dist/email-verification-CWhj2qfb.mjs +228 -0
  99. package/dist/hono-BEq1NYVX.cjs +526 -0
  100. package/dist/hono-Cdukwu5K.cjs +13 -0
  101. package/dist/hono-CoKYWnXA.mjs +7 -0
  102. package/dist/hono-Covz10jU.mjs +508 -0
  103. package/dist/hono-DOM31WQz.d.cts +18 -0
  104. package/dist/hono-DuE14mmj.d.mts +18 -0
  105. package/dist/index-B-WeOMzg.d.cts +13350 -0
  106. package/dist/index-B09P9p5_.d.cts +33 -0
  107. package/dist/index-B5_0QTLg.d.mts +3 -0
  108. package/dist/index-B7SKyR_a.d.cts +3 -0
  109. package/dist/index-BVHscLQl.d.cts +992 -0
  110. package/dist/index-C2-2QDyS.d.cts +35 -0
  111. package/dist/index-CTwrVluH.d.mts +41 -0
  112. package/dist/index-CWAqWfoZ.d.cts +27 -0
  113. package/dist/index-CYSShrFx.d.mts +27 -0
  114. package/dist/index-Qu-iJGNr.d.mts +992 -0
  115. package/dist/index-cs4Sh0En.d.cts +41 -0
  116. package/dist/index-jlessPI0.d.mts +13350 -0
  117. package/dist/index-ppgcFe12.d.mts +33 -0
  118. package/dist/index-to0RO38U.d.mts +35 -0
  119. package/dist/index.cjs +85 -0
  120. package/dist/index.d.cts +5 -0
  121. package/dist/index.d.mts +5 -0
  122. package/dist/index.mjs +27 -0
  123. package/dist/integrations/next-js.cjs +50 -0
  124. package/dist/integrations/next-js.d.cts +23 -0
  125. package/dist/integrations/next-js.d.mts +23 -0
  126. package/dist/integrations/next-js.mjs +49 -0
  127. package/dist/integrations/node.cjs +139 -0
  128. package/dist/integrations/node.d.cts +22 -0
  129. package/dist/integrations/node.d.mts +22 -0
  130. package/dist/integrations/node.mjs +134 -0
  131. package/dist/integrations/react-start.cjs +37 -0
  132. package/dist/integrations/react-start.d.cts +17 -0
  133. package/dist/integrations/react-start.d.mts +17 -0
  134. package/dist/integrations/react-start.mjs +37 -0
  135. package/dist/integrations/solid-start.cjs +14 -0
  136. package/dist/integrations/solid-start.d.cts +13 -0
  137. package/dist/integrations/solid-start.d.mts +13 -0
  138. package/dist/integrations/solid-start.mjs +13 -0
  139. package/dist/integrations/svelte-kit.cjs +52 -0
  140. package/dist/integrations/svelte-kit.d.cts +42 -0
  141. package/dist/integrations/svelte-kit.d.mts +42 -0
  142. package/dist/integrations/svelte-kit.mjs +49 -0
  143. package/dist/ip-B5SwXaMB.cjs +54 -0
  144. package/dist/ip-BjNYspCH.mjs +36 -0
  145. package/dist/json-B1v2qRTQ.mjs +24 -0
  146. package/dist/json-CcJ2HjGo.cjs +30 -0
  147. package/dist/kysely-adapter-Bxi7sPdG.cjs +288 -0
  148. package/dist/kysely-adapter-DRuoT_X8.mjs +270 -0
  149. package/dist/logged-CyGfp8_H.mjs +187 -0
  150. package/dist/logged-DQK3C64b.cjs +193 -0
  151. package/dist/memory-adapter-BlnDIAAX.cjs +154 -0
  152. package/dist/memory-adapter-Db3tsJTn.mjs +148 -0
  153. package/dist/middleware-CE6OhDkq.mjs +29 -0
  154. package/dist/middleware-CWvRH4EW.cjs +47 -0
  155. package/dist/mongodb-adapter-C_qGQED5.mjs +291 -0
  156. package/dist/mongodb-adapter-C_qfK87x.cjs +297 -0
  157. package/dist/node-sqlite-dialect-BfBzyOAg.mjs +155 -0
  158. package/dist/node-sqlite-dialect-mJWC8LWQ.cjs +156 -0
  159. package/dist/oauth2/index.cjs +25 -0
  160. package/dist/oauth2/index.d.cts +42 -0
  161. package/dist/oauth2/index.d.mts +42 -0
  162. package/dist/oauth2/index.mjs +16 -0
  163. package/dist/oauth2-B8M0lW9l.mjs +159 -0
  164. package/dist/oauth2-BLeOEi7Y.cjs +177 -0
  165. package/dist/origin-check-8Gajklvh.mjs +228 -0
  166. package/dist/origin-check-id9lTnqZ.cjs +246 -0
  167. package/dist/parser-CdncAl9i.cjs +83 -0
  168. package/dist/parser-CeAer-RM.mjs +71 -0
  169. package/dist/passkey-B6N20LSS.cjs +512 -0
  170. package/dist/passkey-DJsR_GX3.mjs +505 -0
  171. package/dist/plugins/access/index.cjs +4 -0
  172. package/dist/plugins/access/index.d.cts +2 -0
  173. package/dist/plugins/access/index.d.mts +2 -0
  174. package/dist/plugins/access/index.mjs +3 -0
  175. package/dist/plugins/bearer/index.cjs +7 -0
  176. package/dist/plugins/bearer/index.d.cts +4 -0
  177. package/dist/plugins/bearer/index.d.mts +4 -0
  178. package/dist/plugins/bearer/index.mjs +7 -0
  179. package/dist/plugins/index.cjs +49 -0
  180. package/dist/plugins/index.d.cts +9326 -0
  181. package/dist/plugins/index.d.mts +9326 -0
  182. package/dist/plugins/index.mjs +26 -0
  183. package/dist/plugins/passkey/index.cjs +15 -0
  184. package/dist/plugins/passkey/index.d.cts +4 -0
  185. package/dist/plugins/passkey/index.d.mts +4 -0
  186. package/dist/plugins/passkey/index.mjs +15 -0
  187. package/dist/plugins-C1lm2Wj3.cjs +5254 -0
  188. package/dist/plugins-Dai1QkRU.mjs +5199 -0
  189. package/dist/request-1NL_1lyJ.mjs +58 -0
  190. package/dist/request-CPNlp-DK.cjs +100 -0
  191. package/dist/schema-D-qjygfE.cjs +179 -0
  192. package/dist/schema-DTIwLLmf.mjs +125 -0
  193. package/dist/session-De9POJTW.cjs +641 -0
  194. package/dist/session-rH8ougDl.mjs +538 -0
  195. package/dist/social-providers/index.cjs +10 -0
  196. package/dist/social-providers/index.d.cts +2 -0
  197. package/dist/social-providers/index.d.mts +2 -0
  198. package/dist/social-providers/index.mjs +5 -0
  199. package/dist/social-providers-DcFNUT0S.cjs +13 -0
  200. package/dist/social-providers-DoYJhBe3.mjs +9 -0
  201. package/dist/state--f7fwIGh.cjs +99 -0
  202. package/dist/state-CqJfCIl9.mjs +86 -0
  203. package/dist/test-utils/index.cjs +27492 -0
  204. package/dist/test-utils/index.d.cts +4584 -0
  205. package/dist/test-utils/index.d.mts +4584 -0
  206. package/dist/test-utils/index.mjs +27490 -0
  207. package/dist/types/index.cjs +0 -0
  208. package/dist/types/index.d.cts +3 -0
  209. package/dist/types/index.d.mts +3 -0
  210. package/dist/types/index.mjs +1 -0
  211. package/dist/url-BoUuoIwZ.mjs +88 -0
  212. package/dist/url-D2yvKaM7.cjs +118 -0
  213. package/dist/utils/cookies.cjs +51 -0
  214. package/dist/utils/cookies.d.cts +179 -0
  215. package/dist/utils/cookies.d.mts +179 -0
  216. package/dist/utils/cookies.mjs +7 -0
  217. package/dist/utils-44aDDP8f.cjs +2 -0
  218. package/dist/utils-D4vZd1-9.mjs +4 -0
  219. package/dist/vanilla-Bu2PmFzE.cjs +30 -0
  220. package/dist/vanilla-TfHqeiC7.mjs +25 -0
  221. package/package.json +470 -0
@@ -0,0 +1,793 @@
1
+ import "../crypto-CyQRFtkq.mjs";
2
+ import "../state-CqJfCIl9.mjs";
3
+ import "../request-1NL_1lyJ.mjs";
4
+ import { r as generateId } from "../utils-D4vZd1-9.mjs";
5
+ import { beforeAll, describe, expect, test } from "vitest";
6
+
7
+ //#region src/adapters/test.ts
8
+ const adapterTests = {
9
+ CREATE_MODEL: "create model",
10
+ CREATE_MODEL_SHOULD_ALWAYS_RETURN_AN_ID: "create model should always return an id",
11
+ FIND_MODEL: "find model",
12
+ FIND_MODEL_WITHOUT_ID: "find model without id",
13
+ FIND_MODEL_WITH_SELECT: "find model with select",
14
+ FIND_MODEL_WITH_MODIFIED_FIELD_NAME: "find model with modified field name",
15
+ UPDATE_MODEL: "update model",
16
+ SHOULD_FIND_MANY: "should find many",
17
+ SHOULD_FIND_MANY_WITH_WHERE: "should find many with where",
18
+ SHOULD_FIND_MANY_WITH_OPERATORS: "should find many with operators",
19
+ SHOULD_WORK_WITH_REFERENCE_FIELDS: "should work with reference fields",
20
+ SHOULD_FIND_MANY_WITH_NOT_IN_OPERATOR: "should find many with not in operator",
21
+ SHOULD_FIND_MANY_WITH_SORT_BY: "should find many with sortBy",
22
+ SHOULD_FIND_MANY_WITH_LIMIT: "should find many with limit",
23
+ SHOULD_FIND_MANY_WITH_OFFSET: "should find many with offset",
24
+ SHOULD_UPDATE_WITH_MULTIPLE_WHERE: "should update with multiple where",
25
+ DELETE_MODEL: "delete model",
26
+ SHOULD_DELETE_MANY: "should delete many",
27
+ SHOULD_NOT_THROW_ON_DELETE_RECORD_NOT_FOUND: "shouldn't throw on delete record not found",
28
+ SHOULD_NOT_THROW_ON_RECORD_NOT_FOUND: "shouldn't throw on record not found",
29
+ SHOULD_FIND_MANY_WITH_CONTAINS_OPERATOR: "should find many with contains operator",
30
+ SHOULD_SEARCH_USERS_WITH_STARTS_WITH: "should search users with startsWith",
31
+ SHOULD_SEARCH_USERS_WITH_ENDS_WITH: "should search users with endsWith",
32
+ SHOULD_PREFER_GENERATE_ID_IF_PROVIDED: "should prefer generateId if provided",
33
+ SHOULD_ROLLBACK_FAILING_TRANSACTION: "should rollback failing transaction",
34
+ SHOULD_RETURN_TRANSACTION_RESULT: "should return transaction result",
35
+ SHOULD_FIND_MANY_WITH_CONNECTORS: "should find many with connectors"
36
+ };
37
+ const { ...numberIdAdapterTestsCopy } = adapterTests;
38
+ const numberIdAdapterTests = {
39
+ ...numberIdAdapterTestsCopy,
40
+ SHOULD_RETURN_A_NUMBER_ID_AS_A_RESULT: "Should return a number id as a result",
41
+ SHOULD_INCREMENT_THE_ID_BY_1: "Should increment the id by 1"
42
+ };
43
+ delete numberIdAdapterTests.SHOULD_NOT_THROW_ON_DELETE_RECORD_NOT_FOUND;
44
+ /**
45
+ * @deprecated Use `testAdapter` instead.
46
+ */
47
+ function adapterTest({ getAdapter, disableTests: disabledTests, testPrefix }, internalOptions) {
48
+ console.warn("This test function is deprecated and will be removed in the future. Use `testAdapter` instead.");
49
+ const adapter = async () => await getAdapter(internalOptions?.predefinedOptions);
50
+ async function resetDebugLogs() {
51
+ (await adapter())?.adapterTestDebugLogs?.resetDebugLogs();
52
+ }
53
+ async function printDebugLogs() {
54
+ (await adapter())?.adapterTestDebugLogs?.printDebugLogs();
55
+ }
56
+ const testRunId = Date.now().toString(36) + Math.random().toString(36).substring(2, 5);
57
+ const getUniqueEmail = (base) => `${testRunId}_${base}`;
58
+ let user = {
59
+ name: "user",
60
+ email: getUniqueEmail("user@email.com"),
61
+ emailVerified: true,
62
+ createdAt: /* @__PURE__ */ new Date(),
63
+ updatedAt: /* @__PURE__ */ new Date()
64
+ };
65
+ test.skipIf(disabledTests?.CREATE_MODEL)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.CREATE_MODEL}`, async ({ onTestFailed }) => {
66
+ await resetDebugLogs();
67
+ onTestFailed(async () => {
68
+ await printDebugLogs();
69
+ });
70
+ const res = await (await adapter()).create({
71
+ model: "user",
72
+ data: user
73
+ });
74
+ user.id = res.id;
75
+ expect({
76
+ name: res.name,
77
+ email: res.email
78
+ }).toEqual({
79
+ name: user.name,
80
+ email: user.email
81
+ });
82
+ });
83
+ test.skipIf(disabledTests?.CREATE_MODEL_SHOULD_ALWAYS_RETURN_AN_ID)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.CREATE_MODEL_SHOULD_ALWAYS_RETURN_AN_ID}`, async ({ onTestFailed }) => {
84
+ await resetDebugLogs();
85
+ onTestFailed(async () => {
86
+ await printDebugLogs();
87
+ });
88
+ const res = await (await adapter()).create({
89
+ model: "user",
90
+ data: {
91
+ name: "test-name-without-id",
92
+ email: getUniqueEmail("test-email-without-id@email.com")
93
+ }
94
+ });
95
+ expect(res).toHaveProperty("id");
96
+ expect(res?.id).toBeTypeOf("string");
97
+ });
98
+ test.skipIf(disabledTests?.FIND_MODEL)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.FIND_MODEL}`, async ({ onTestFailed }) => {
99
+ await resetDebugLogs();
100
+ onTestFailed(async () => {
101
+ await printDebugLogs();
102
+ });
103
+ const res = await (await adapter()).findOne({
104
+ model: "user",
105
+ where: [{
106
+ field: "id",
107
+ value: user.id
108
+ }]
109
+ });
110
+ expect({
111
+ name: res?.name,
112
+ email: res?.email
113
+ }).toEqual({
114
+ name: user.name,
115
+ email: user.email
116
+ });
117
+ });
118
+ test.skipIf(disabledTests?.FIND_MODEL_WITHOUT_ID)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.FIND_MODEL_WITHOUT_ID}`, async ({ onTestFailed }) => {
119
+ await resetDebugLogs();
120
+ onTestFailed(async () => {
121
+ await printDebugLogs();
122
+ });
123
+ const res = await (await adapter()).findOne({
124
+ model: "user",
125
+ where: [{
126
+ field: "email",
127
+ value: user.email
128
+ }]
129
+ });
130
+ expect({
131
+ name: res?.name,
132
+ email: res?.email
133
+ }).toEqual({
134
+ name: user.name,
135
+ email: user.email
136
+ });
137
+ });
138
+ test.skipIf(disabledTests?.FIND_MODEL_WITH_MODIFIED_FIELD_NAME)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.FIND_MODEL_WITH_MODIFIED_FIELD_NAME}`, async ({ onTestFailed }) => {
139
+ await resetDebugLogs();
140
+ onTestFailed(async () => {
141
+ await printDebugLogs();
142
+ });
143
+ const email = getUniqueEmail("test-email-with-modified-field@email.com");
144
+ const adapter$1 = await getAdapter(Object.assign({ user: { fields: { email: "email_address" } } }, internalOptions?.predefinedOptions));
145
+ expect((await adapter$1.create({
146
+ model: "user",
147
+ data: {
148
+ email,
149
+ name: "test-name-with-modified-field",
150
+ emailVerified: true,
151
+ createdAt: /* @__PURE__ */ new Date(),
152
+ updatedAt: /* @__PURE__ */ new Date()
153
+ }
154
+ })).email).toEqual(email);
155
+ const res = await adapter$1.findOne({
156
+ model: "user",
157
+ where: [{
158
+ field: "email",
159
+ value: email
160
+ }]
161
+ });
162
+ expect(res).not.toBeNull();
163
+ expect(res?.email).toEqual(email);
164
+ });
165
+ test.skipIf(disabledTests?.FIND_MODEL_WITH_SELECT)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.FIND_MODEL_WITH_SELECT}`, async ({ onTestFailed }) => {
166
+ await resetDebugLogs();
167
+ onTestFailed(async () => {
168
+ await printDebugLogs();
169
+ });
170
+ expect(await (await adapter()).findOne({
171
+ model: "user",
172
+ where: [{
173
+ field: "id",
174
+ value: user.id
175
+ }],
176
+ select: ["email"]
177
+ })).toEqual({ email: user.email });
178
+ });
179
+ test.skipIf(disabledTests?.UPDATE_MODEL)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.UPDATE_MODEL}`, async ({ onTestFailed }) => {
180
+ await resetDebugLogs();
181
+ onTestFailed(async () => {
182
+ await printDebugLogs();
183
+ });
184
+ const newEmail = getUniqueEmail("updated@email.com");
185
+ expect(await (await adapter()).update({
186
+ model: "user",
187
+ where: [{
188
+ field: "id",
189
+ value: user.id
190
+ }],
191
+ update: { email: newEmail }
192
+ })).toMatchObject({
193
+ email: newEmail,
194
+ name: user.name
195
+ });
196
+ });
197
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY}`, async ({ onTestFailed }) => {
198
+ await resetDebugLogs();
199
+ onTestFailed(async () => {
200
+ await printDebugLogs();
201
+ });
202
+ expect((await (await adapter()).findMany({ model: "user" })).length).toBe(3);
203
+ });
204
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_WHERE)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_WHERE}`, async ({ onTestFailed }) => {
205
+ await resetDebugLogs();
206
+ onTestFailed(async () => {
207
+ await printDebugLogs();
208
+ });
209
+ const user$1 = await (await adapter()).create({
210
+ model: "user",
211
+ data: {
212
+ name: "user2",
213
+ email: getUniqueEmail("test@email.com"),
214
+ emailVerified: true,
215
+ createdAt: /* @__PURE__ */ new Date(),
216
+ updatedAt: /* @__PURE__ */ new Date()
217
+ }
218
+ });
219
+ expect((await (await adapter()).findMany({
220
+ model: "user",
221
+ where: [{
222
+ field: "id",
223
+ value: user$1.id
224
+ }]
225
+ })).length).toBe(1);
226
+ });
227
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_OPERATORS)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_OPERATORS}`, async ({ onTestFailed }) => {
228
+ await resetDebugLogs();
229
+ onTestFailed(async () => {
230
+ await printDebugLogs();
231
+ });
232
+ const newUser = await (await adapter()).create({
233
+ model: "user",
234
+ data: {
235
+ name: "user",
236
+ email: getUniqueEmail("test-email2@email.com"),
237
+ emailVerified: true,
238
+ createdAt: /* @__PURE__ */ new Date(),
239
+ updatedAt: /* @__PURE__ */ new Date()
240
+ }
241
+ });
242
+ expect((await (await adapter()).findMany({
243
+ model: "user",
244
+ where: [{
245
+ field: "id",
246
+ operator: "in",
247
+ value: [user.id, newUser.id]
248
+ }]
249
+ })).length).toBe(2);
250
+ });
251
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_NOT_IN_OPERATOR)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_NOT_IN_OPERATOR}`, async ({ onTestFailed }) => {
252
+ await resetDebugLogs();
253
+ onTestFailed(async () => {
254
+ await printDebugLogs();
255
+ });
256
+ const newUser3 = await (await adapter()).create({
257
+ model: "user",
258
+ data: {
259
+ name: "user",
260
+ email: getUniqueEmail("test-email3@email.com"),
261
+ emailVerified: true,
262
+ createdAt: /* @__PURE__ */ new Date(),
263
+ updatedAt: /* @__PURE__ */ new Date()
264
+ }
265
+ });
266
+ expect((await (await adapter()).findMany({ model: "user" })).length).toBe(6);
267
+ expect((await (await adapter()).findMany({
268
+ model: "user",
269
+ where: [{
270
+ field: "id",
271
+ operator: "not_in",
272
+ value: [user.id, newUser3.id]
273
+ }]
274
+ })).length).toBe(4);
275
+ await (await adapter()).delete({
276
+ model: "user",
277
+ where: [{
278
+ field: "id",
279
+ value: newUser3.id
280
+ }]
281
+ });
282
+ });
283
+ test.skipIf(disabledTests?.SHOULD_WORK_WITH_REFERENCE_FIELDS)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_WORK_WITH_REFERENCE_FIELDS}`, async ({ onTestFailed }) => {
284
+ await resetDebugLogs();
285
+ onTestFailed(async () => {
286
+ await printDebugLogs();
287
+ });
288
+ let token = null;
289
+ const user$1 = await (await adapter()).create({
290
+ model: "user",
291
+ data: {
292
+ name: "user",
293
+ email: getUniqueEmail("my-email@email.com"),
294
+ emailVerified: true,
295
+ createdAt: /* @__PURE__ */ new Date(),
296
+ updatedAt: /* @__PURE__ */ new Date()
297
+ }
298
+ });
299
+ token = (await (await adapter()).create({
300
+ model: "session",
301
+ data: {
302
+ token: generateId(),
303
+ createdAt: /* @__PURE__ */ new Date(),
304
+ updatedAt: /* @__PURE__ */ new Date(),
305
+ userId: user$1.id,
306
+ expiresAt: /* @__PURE__ */ new Date()
307
+ }
308
+ })).token;
309
+ const res = await (await adapter()).findOne({
310
+ model: "session",
311
+ where: [{
312
+ field: "userId",
313
+ value: user$1.id
314
+ }]
315
+ });
316
+ const resToken = await (await adapter()).findOne({
317
+ model: "session",
318
+ where: [{
319
+ field: "token",
320
+ value: token
321
+ }]
322
+ });
323
+ expect(res).toMatchObject({ userId: user$1.id });
324
+ expect(resToken).toMatchObject({ userId: user$1.id });
325
+ });
326
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_SORT_BY)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_SORT_BY}`, async ({ onTestFailed }) => {
327
+ await resetDebugLogs();
328
+ onTestFailed(async () => {
329
+ await printDebugLogs();
330
+ });
331
+ await (await adapter()).create({
332
+ model: "user",
333
+ data: {
334
+ name: "a",
335
+ email: getUniqueEmail("a@email.com"),
336
+ emailVerified: true,
337
+ createdAt: /* @__PURE__ */ new Date(),
338
+ updatedAt: /* @__PURE__ */ new Date()
339
+ }
340
+ });
341
+ expect((await (await adapter()).findMany({
342
+ model: "user",
343
+ sortBy: {
344
+ field: "name",
345
+ direction: "asc"
346
+ }
347
+ }))[0].name).toBe("a");
348
+ const res2 = await (await adapter()).findMany({
349
+ model: "user",
350
+ sortBy: {
351
+ field: "name",
352
+ direction: "desc"
353
+ }
354
+ });
355
+ expect(res2[res2.length - 1].name).toBe("a");
356
+ });
357
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_LIMIT)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_LIMIT}`, async ({ onTestFailed }) => {
358
+ await resetDebugLogs();
359
+ onTestFailed(async () => {
360
+ await printDebugLogs();
361
+ });
362
+ expect((await (await adapter()).findMany({
363
+ model: "user",
364
+ limit: 1
365
+ })).length).toBe(1);
366
+ });
367
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_OFFSET)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_OFFSET}`, async ({ onTestFailed }) => {
368
+ await resetDebugLogs();
369
+ onTestFailed(async () => {
370
+ await printDebugLogs();
371
+ });
372
+ expect((await (await adapter()).findMany({
373
+ model: "user",
374
+ offset: 2
375
+ })).length).toBe(5);
376
+ });
377
+ test.skipIf(disabledTests?.SHOULD_UPDATE_WITH_MULTIPLE_WHERE)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_UPDATE_WITH_MULTIPLE_WHERE}`, async ({ onTestFailed }) => {
378
+ await resetDebugLogs();
379
+ onTestFailed(async () => {
380
+ await printDebugLogs();
381
+ });
382
+ const currentEmail = getUniqueEmail("updated@email.com");
383
+ await (await adapter()).updateMany({
384
+ model: "user",
385
+ where: [{
386
+ field: "name",
387
+ value: user.name
388
+ }, {
389
+ field: "email",
390
+ value: currentEmail
391
+ }],
392
+ update: { email: getUniqueEmail("updated2@email.com") }
393
+ });
394
+ expect(await (await adapter()).findOne({
395
+ model: "user",
396
+ where: [{
397
+ field: "email",
398
+ value: getUniqueEmail("updated2@email.com")
399
+ }]
400
+ })).toMatchObject({
401
+ name: user.name,
402
+ email: getUniqueEmail("updated2@email.com")
403
+ });
404
+ });
405
+ test.skipIf(disabledTests?.DELETE_MODEL)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.DELETE_MODEL}`, async ({ onTestFailed }) => {
406
+ await resetDebugLogs();
407
+ onTestFailed(async () => {
408
+ await printDebugLogs();
409
+ });
410
+ await (await adapter()).delete({
411
+ model: "user",
412
+ where: [{
413
+ field: "id",
414
+ value: user.id
415
+ }]
416
+ });
417
+ expect(await (await adapter()).findOne({
418
+ model: "user",
419
+ where: [{
420
+ field: "id",
421
+ value: user.id
422
+ }]
423
+ })).toBeNull();
424
+ });
425
+ test.skipIf(disabledTests?.SHOULD_DELETE_MANY)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_DELETE_MANY}`, async ({ onTestFailed }) => {
426
+ await resetDebugLogs();
427
+ onTestFailed(async () => {
428
+ await printDebugLogs();
429
+ });
430
+ for (const i of [
431
+ "to-be-delete-1",
432
+ "to-be-delete-2",
433
+ "to-be-delete-3"
434
+ ]) await (await adapter()).create({
435
+ model: "user",
436
+ data: {
437
+ name: "to-be-deleted",
438
+ email: getUniqueEmail(`email@test-${i}.com`),
439
+ emailVerified: true,
440
+ createdAt: /* @__PURE__ */ new Date(),
441
+ updatedAt: /* @__PURE__ */ new Date()
442
+ }
443
+ });
444
+ expect((await (await adapter()).findMany({
445
+ model: "user",
446
+ where: [{
447
+ field: "name",
448
+ value: "to-be-deleted"
449
+ }]
450
+ })).length).toBe(3);
451
+ await (await adapter()).deleteMany({
452
+ model: "user",
453
+ where: [{
454
+ field: "name",
455
+ value: "to-be-deleted"
456
+ }]
457
+ });
458
+ expect((await (await adapter()).findMany({
459
+ model: "user",
460
+ where: [{
461
+ field: "name",
462
+ value: "to-be-deleted"
463
+ }]
464
+ })).length).toBe(0);
465
+ });
466
+ test.skipIf(disabledTests?.SHOULD_NOT_THROW_ON_DELETE_RECORD_NOT_FOUND)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_NOT_THROW_ON_DELETE_RECORD_NOT_FOUND}`, async ({ onTestFailed }) => {
467
+ await resetDebugLogs();
468
+ onTestFailed(async () => {
469
+ await printDebugLogs();
470
+ });
471
+ await (await adapter()).delete({
472
+ model: "user",
473
+ where: [{
474
+ field: "id",
475
+ value: "100000"
476
+ }]
477
+ });
478
+ });
479
+ test.skipIf(disabledTests?.SHOULD_NOT_THROW_ON_RECORD_NOT_FOUND)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_NOT_THROW_ON_RECORD_NOT_FOUND}`, async ({ onTestFailed }) => {
480
+ await resetDebugLogs();
481
+ onTestFailed(async () => {
482
+ await printDebugLogs();
483
+ });
484
+ expect(await (await adapter()).findOne({
485
+ model: "user",
486
+ where: [{
487
+ field: "id",
488
+ value: "100000"
489
+ }]
490
+ })).toBeNull();
491
+ });
492
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_CONTAINS_OPERATOR)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_CONTAINS_OPERATOR}`, async ({ onTestFailed }) => {
493
+ await resetDebugLogs();
494
+ onTestFailed(async () => {
495
+ await printDebugLogs();
496
+ });
497
+ expect((await (await adapter()).findMany({
498
+ model: "user",
499
+ where: [{
500
+ field: "name",
501
+ operator: "contains",
502
+ value: "user2"
503
+ }]
504
+ })).length).toBe(1);
505
+ });
506
+ test.skipIf(disabledTests?.SHOULD_SEARCH_USERS_WITH_STARTS_WITH)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_SEARCH_USERS_WITH_STARTS_WITH}`, async ({ onTestFailed }) => {
507
+ await resetDebugLogs();
508
+ onTestFailed(async () => {
509
+ await printDebugLogs();
510
+ });
511
+ await (await adapter()).create({
512
+ model: "user",
513
+ data: {
514
+ name: "user_starts",
515
+ email: getUniqueEmail("startswith1@test.com"),
516
+ emailVerified: true,
517
+ createdAt: /* @__PURE__ */ new Date(),
518
+ updatedAt: /* @__PURE__ */ new Date()
519
+ }
520
+ });
521
+ await (await adapter()).create({
522
+ model: "user",
523
+ data: {
524
+ name: "user2_starts",
525
+ email: getUniqueEmail("startswith2@test.com"),
526
+ emailVerified: true,
527
+ createdAt: /* @__PURE__ */ new Date(),
528
+ updatedAt: /* @__PURE__ */ new Date()
529
+ }
530
+ });
531
+ await (await adapter()).create({
532
+ model: "user",
533
+ data: {
534
+ name: "user3_starts",
535
+ email: getUniqueEmail("startswith3@test.com"),
536
+ emailVerified: true,
537
+ createdAt: /* @__PURE__ */ new Date(),
538
+ updatedAt: /* @__PURE__ */ new Date()
539
+ }
540
+ });
541
+ expect((await (await adapter()).findMany({
542
+ model: "user",
543
+ where: [{
544
+ field: "name",
545
+ operator: "starts_with",
546
+ value: "user"
547
+ }]
548
+ })).length).toBeGreaterThanOrEqual(3);
549
+ });
550
+ test.skipIf(disabledTests?.SHOULD_SEARCH_USERS_WITH_ENDS_WITH)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_SEARCH_USERS_WITH_ENDS_WITH}`, async ({ onTestFailed }) => {
551
+ await resetDebugLogs();
552
+ onTestFailed(async () => {
553
+ await printDebugLogs();
554
+ });
555
+ await (await adapter()).create({
556
+ model: "user",
557
+ data: {
558
+ name: "tester2",
559
+ email: getUniqueEmail("endswith@test.com"),
560
+ emailVerified: true,
561
+ createdAt: /* @__PURE__ */ new Date(),
562
+ updatedAt: /* @__PURE__ */ new Date()
563
+ }
564
+ });
565
+ expect((await (await adapter()).findMany({
566
+ model: "user",
567
+ where: [{
568
+ field: "name",
569
+ operator: "ends_with",
570
+ value: "ter2"
571
+ }]
572
+ })).length).toBe(1);
573
+ });
574
+ test.skipIf(disabledTests?.SHOULD_PREFER_GENERATE_ID_IF_PROVIDED)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_PREFER_GENERATE_ID_IF_PROVIDED}`, async ({ onTestFailed }) => {
575
+ await resetDebugLogs();
576
+ onTestFailed(async () => {
577
+ await printDebugLogs();
578
+ });
579
+ expect((await (await getAdapter(Object.assign({ advanced: { database: { generateId: () => "mocked-id" } } }, internalOptions?.predefinedOptions))).create({
580
+ model: "user",
581
+ data: {
582
+ name: "user4",
583
+ email: getUniqueEmail("user4@email.com"),
584
+ emailVerified: true,
585
+ createdAt: /* @__PURE__ */ new Date(),
586
+ updatedAt: /* @__PURE__ */ new Date()
587
+ }
588
+ })).id).toBe("mocked-id");
589
+ });
590
+ test.skipIf(disabledTests?.SHOULD_ROLLBACK_FAILING_TRANSACTION)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_ROLLBACK_FAILING_TRANSACTION}`, async ({ onTestFailed, skip }) => {
591
+ await resetDebugLogs();
592
+ onTestFailed(async () => {
593
+ await printDebugLogs();
594
+ });
595
+ const customAdapter = await adapter();
596
+ if (!customAdapter?.options?.adapterConfig.transaction) {
597
+ skip(`Skipping test: ${customAdapter?.options?.adapterConfig.adapterName || "Adapter"}
598
+ does not support transactions`);
599
+ return;
600
+ }
601
+ const user5 = {
602
+ name: "user5",
603
+ email: getUniqueEmail("user5@email.com"),
604
+ emailVerified: true,
605
+ createdAt: /* @__PURE__ */ new Date(),
606
+ updatedAt: /* @__PURE__ */ new Date()
607
+ };
608
+ const user6 = {
609
+ name: "user6",
610
+ email: getUniqueEmail("user6@email.com"),
611
+ emailVerified: true,
612
+ createdAt: /* @__PURE__ */ new Date(),
613
+ updatedAt: /* @__PURE__ */ new Date()
614
+ };
615
+ await expect(customAdapter.transaction(async (tx) => {
616
+ await tx.create({
617
+ model: "user",
618
+ data: user5
619
+ });
620
+ throw new Error("Simulated failure");
621
+ })).rejects.toThrow("Simulated failure");
622
+ await expect(customAdapter.findMany({
623
+ model: "user",
624
+ where: [{
625
+ field: "email",
626
+ value: user5.email,
627
+ connector: "OR"
628
+ }, {
629
+ field: "email",
630
+ value: user6.email,
631
+ connector: "OR"
632
+ }]
633
+ })).resolves.toEqual([]);
634
+ });
635
+ test.skipIf(disabledTests?.SHOULD_RETURN_TRANSACTION_RESULT)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_RETURN_TRANSACTION_RESULT}`, async ({ onTestFailed, skip }) => {
636
+ await resetDebugLogs();
637
+ onTestFailed(async () => {
638
+ await printDebugLogs();
639
+ });
640
+ const customAdapter = await adapter();
641
+ if (!customAdapter?.options?.adapterConfig.transaction) {
642
+ skip(`Skipping test: ${customAdapter?.options?.adapterConfig.adapterName || "Adapter"}
643
+ does not support transactions`);
644
+ return;
645
+ }
646
+ expect(await customAdapter.transaction(async (tx) => {
647
+ return (await tx.create({
648
+ model: "user",
649
+ data: {
650
+ name: "user6",
651
+ email: getUniqueEmail("user6@email.com"),
652
+ emailVerified: true,
653
+ createdAt: /* @__PURE__ */ new Date(),
654
+ updatedAt: /* @__PURE__ */ new Date()
655
+ }
656
+ })).email;
657
+ })).toEqual(getUniqueEmail("user6@email.com"));
658
+ });
659
+ test.skipIf(disabledTests?.SHOULD_FIND_MANY_WITH_CONNECTORS)(`${testPrefix ? `${testPrefix} - ` : ""}${adapterTests.SHOULD_FIND_MANY_WITH_CONNECTORS}`, async ({ onTestFailed }) => {
660
+ await resetDebugLogs();
661
+ onTestFailed(async () => {
662
+ await printDebugLogs();
663
+ });
664
+ await (await adapter()).create({
665
+ model: "user",
666
+ data: {
667
+ name: "connector-user1",
668
+ email: getUniqueEmail("connector-user1@email.com"),
669
+ emailVerified: true,
670
+ createdAt: /* @__PURE__ */ new Date(),
671
+ updatedAt: /* @__PURE__ */ new Date()
672
+ }
673
+ });
674
+ await (await adapter()).create({
675
+ model: "user",
676
+ data: {
677
+ name: "con-user2",
678
+ email: getUniqueEmail("connector-user2@email.com"),
679
+ emailVerified: true,
680
+ createdAt: /* @__PURE__ */ new Date(),
681
+ updatedAt: /* @__PURE__ */ new Date()
682
+ }
683
+ });
684
+ expect((await (await adapter()).findMany({
685
+ model: "user",
686
+ where: [{
687
+ field: "name",
688
+ value: "con-user2",
689
+ connector: "AND"
690
+ }, {
691
+ field: "email",
692
+ value: getUniqueEmail("connector-user2@email.com"),
693
+ connector: "AND"
694
+ }]
695
+ })).length).toBe(1);
696
+ expect((await (await adapter()).findMany({
697
+ model: "user",
698
+ where: [{
699
+ field: "name",
700
+ value: "connector-user1",
701
+ connector: "OR"
702
+ }, {
703
+ field: "name",
704
+ value: "con-user2",
705
+ connector: "OR"
706
+ }]
707
+ })).length).toBe(2);
708
+ });
709
+ }
710
+ function runAdapterTest(opts) {
711
+ return adapterTest(opts);
712
+ }
713
+ function runNumberIdAdapterTest(opts) {
714
+ const cleanup = [];
715
+ const testRunId = Date.now().toString(36) + Math.random().toString(36).substr(2, 5);
716
+ const getUniqueEmail = (base) => `${testRunId}_${base}`;
717
+ const adapter = async () => await opts.getAdapter({ advanced: { database: { useNumberId: true } } });
718
+ describe("Should run number id specific tests", async (test$1) => {
719
+ let idNumber = -1;
720
+ async function resetDebugLogs() {
721
+ (await adapter())?.adapterTestDebugLogs?.resetDebugLogs();
722
+ }
723
+ async function printDebugLogs() {
724
+ (await adapter())?.adapterTestDebugLogs?.printDebugLogs();
725
+ }
726
+ test$1.skipIf(opts.disableTests?.SHOULD_RETURN_A_NUMBER_ID_AS_A_RESULT)(`${opts.testPrefix ? `${opts.testPrefix} - ` : ""}${numberIdAdapterTests.SHOULD_RETURN_A_NUMBER_ID_AS_A_RESULT}`, async ({ onTestFailed }) => {
727
+ await resetDebugLogs();
728
+ onTestFailed(async () => {
729
+ await printDebugLogs();
730
+ });
731
+ const res = await (await adapter()).create({
732
+ model: "user",
733
+ data: {
734
+ name: "user",
735
+ email: getUniqueEmail("number-user@email.com")
736
+ }
737
+ });
738
+ cleanup.push({
739
+ modelName: "user",
740
+ id: res.id
741
+ });
742
+ expect(res.id).toBeTypeOf("string");
743
+ expect(parseInt(res.id)).toBeGreaterThan(0);
744
+ idNumber = parseInt(res.id);
745
+ });
746
+ test$1.skipIf(opts.disableTests?.SHOULD_INCREMENT_THE_ID_BY_1)(`${opts.testPrefix ? `${opts.testPrefix} - ` : ""}${numberIdAdapterTests.SHOULD_INCREMENT_THE_ID_BY_1}`, async ({ onTestFailed }) => {
747
+ await resetDebugLogs();
748
+ onTestFailed(async () => {
749
+ console.log(`ID number from last create: ${idNumber}`);
750
+ await printDebugLogs();
751
+ });
752
+ const res = await (await adapter()).create({
753
+ model: "user",
754
+ data: {
755
+ name: "user2",
756
+ email: getUniqueEmail("number-user2@email.com")
757
+ }
758
+ });
759
+ cleanup.push({
760
+ modelName: "user",
761
+ id: res.id
762
+ });
763
+ expect(parseInt(res.id)).toBe(idNumber + 1);
764
+ });
765
+ });
766
+ describe("Should run normal adapter tests with number id enabled", async (test$1) => {
767
+ beforeAll(async () => {
768
+ for (const { modelName, id } of cleanup) await (await adapter()).delete({
769
+ model: modelName,
770
+ where: [{
771
+ field: "id",
772
+ value: id
773
+ }]
774
+ });
775
+ });
776
+ await adapterTest({
777
+ ...opts,
778
+ disableTests: {
779
+ ...opts.disableTests,
780
+ SHOULD_PREFER_GENERATE_ID_IF_PROVIDED: true
781
+ }
782
+ }, { predefinedOptions: { advanced: { database: { useNumberId: true } } } });
783
+ });
784
+ }
785
+ function recoverProcessTZ() {
786
+ const originalTZ = process.env.TZ;
787
+ return { [Symbol.dispose]: () => {
788
+ process.env.TZ = originalTZ;
789
+ } };
790
+ }
791
+
792
+ //#endregion
793
+ export { recoverProcessTZ, runAdapterTest, runNumberIdAdapterTest };