@geekmidas/testkit 10.0.0-alpha.9 → 10.0.0-alpha.91
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/README.md +74 -0
- package/dist/Factory.cjs +51 -2
- package/dist/Factory.cjs.map +1 -0
- package/dist/Factory.d.cts +143 -3
- package/dist/Factory.d.cts.map +1 -0
- package/dist/Factory.d.mts +143 -3
- package/dist/Factory.d.mts.map +1 -0
- package/dist/Factory.mjs +50 -2
- package/dist/Factory.mjs.map +1 -0
- package/dist/KyselyFactory.cjs +237 -4
- package/dist/KyselyFactory.cjs.map +1 -0
- package/dist/KyselyFactory.d.cts +224 -4
- package/dist/KyselyFactory.d.cts.map +1 -0
- package/dist/KyselyFactory.d.mts +224 -4
- package/dist/KyselyFactory.d.mts.map +1 -0
- package/dist/KyselyFactory.mjs +236 -4
- package/dist/KyselyFactory.mjs.map +1 -0
- package/dist/ObjectionFactory.cjs +265 -4
- package/dist/ObjectionFactory.cjs.map +1 -0
- package/dist/ObjectionFactory.d.cts +237 -4
- package/dist/ObjectionFactory.d.cts.map +1 -0
- package/dist/ObjectionFactory.d.mts +237 -4
- package/dist/ObjectionFactory.d.mts.map +1 -0
- package/dist/ObjectionFactory.mjs +264 -4
- package/dist/ObjectionFactory.mjs.map +1 -0
- package/dist/PostgresKyselyMigrator.cjs +94 -3
- package/dist/PostgresKyselyMigrator.cjs.map +1 -0
- package/dist/PostgresKyselyMigrator.d.cts +80 -3
- package/dist/PostgresKyselyMigrator.d.cts.map +1 -0
- package/dist/PostgresKyselyMigrator.d.mts +80 -3
- package/dist/PostgresKyselyMigrator.d.mts.map +1 -0
- package/dist/PostgresKyselyMigrator.mjs +93 -3
- package/dist/PostgresKyselyMigrator.mjs.map +1 -0
- package/dist/{PostgresMigrator-C_QQ6q35.d.mts → PostgresMigrator-CDPnnwMJ.d.cts} +11 -5
- package/dist/PostgresMigrator-CDPnnwMJ.d.cts.map +1 -0
- package/dist/{PostgresMigrator-CeYy-eHF.d.cts → PostgresMigrator-CDPnnwMJ.d.mts} +11 -5
- package/dist/PostgresMigrator-CDPnnwMJ.d.mts.map +1 -0
- package/dist/PostgresMigrator.cjs +178 -2
- package/dist/PostgresMigrator.cjs.map +1 -0
- package/dist/PostgresMigrator.d.cts +1 -1
- package/dist/PostgresMigrator.d.mts +1 -1
- package/dist/PostgresMigrator.mjs +175 -2
- package/dist/PostgresMigrator.mjs.map +1 -0
- package/dist/PostgresObjectionMigrator.cjs +118 -3
- package/dist/PostgresObjectionMigrator.cjs.map +1 -0
- package/dist/PostgresObjectionMigrator.d.cts +75 -3
- package/dist/PostgresObjectionMigrator.d.cts.map +1 -0
- package/dist/PostgresObjectionMigrator.d.mts +75 -3
- package/dist/PostgresObjectionMigrator.d.mts.map +1 -0
- package/dist/PostgresObjectionMigrator.mjs +117 -3
- package/dist/PostgresObjectionMigrator.mjs.map +1 -0
- package/dist/VitestKyselyTransactionIsolator.cjs +66 -3
- package/dist/VitestKyselyTransactionIsolator.cjs.map +1 -0
- package/dist/VitestKyselyTransactionIsolator.d.cts +60 -3
- package/dist/VitestKyselyTransactionIsolator.d.cts.map +1 -0
- package/dist/VitestKyselyTransactionIsolator.d.mts +60 -3
- package/dist/VitestKyselyTransactionIsolator.d.mts.map +1 -0
- package/dist/VitestKyselyTransactionIsolator.mjs +65 -3
- package/dist/VitestKyselyTransactionIsolator.mjs.map +1 -0
- package/dist/VitestObjectionTransactionIsolator.cjs +62 -3
- package/dist/VitestObjectionTransactionIsolator.cjs.map +1 -0
- package/dist/VitestObjectionTransactionIsolator.d.cts +56 -3
- package/dist/VitestObjectionTransactionIsolator.d.cts.map +1 -0
- package/dist/VitestObjectionTransactionIsolator.d.mts +56 -3
- package/dist/VitestObjectionTransactionIsolator.d.mts.map +1 -0
- package/dist/VitestObjectionTransactionIsolator.mjs +61 -3
- package/dist/VitestObjectionTransactionIsolator.mjs.map +1 -0
- package/dist/VitestTransactionIsolator.cjs +187 -4
- package/dist/VitestTransactionIsolator.cjs.map +1 -0
- package/dist/VitestTransactionIsolator.d.cts +219 -2
- package/dist/VitestTransactionIsolator.d.cts.map +1 -0
- package/dist/VitestTransactionIsolator.d.mts +219 -2
- package/dist/VitestTransactionIsolator.d.mts.map +1 -0
- package/dist/VitestTransactionIsolator.mjs +184 -2
- package/dist/VitestTransactionIsolator.mjs.map +1 -0
- package/dist/aws.cjs +3 -4
- package/dist/aws.cjs.map +1 -1
- package/dist/aws.d.cts +3 -8
- package/dist/aws.d.cts.map +1 -1
- package/dist/aws.d.mts +3 -8
- package/dist/aws.d.mts.map +1 -1
- package/dist/aws.mjs +1 -2
- package/dist/aws.mjs.map +1 -1
- package/dist/benchmark.cjs +2 -2
- package/dist/benchmark.cjs.map +1 -1
- package/dist/benchmark.d.cts +4 -6
- package/dist/benchmark.d.cts.map +1 -1
- package/dist/benchmark.d.mts +4 -6
- package/dist/benchmark.d.mts.map +1 -1
- package/dist/benchmark.mjs +1 -1
- package/dist/benchmark.mjs.map +1 -1
- package/dist/better-auth.cjs +17 -8
- package/dist/better-auth.cjs.map +1 -1
- package/dist/better-auth.d.cts +13142 -5
- package/dist/better-auth.d.cts.map +1 -1
- package/dist/better-auth.d.mts +13142 -5
- package/dist/better-auth.d.mts.map +1 -1
- package/dist/better-auth.mjs +15 -6
- package/dist/better-auth.mjs.map +1 -1
- package/dist/browser.cjs +149 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +62 -0
- package/dist/browser.d.cts.map +1 -0
- package/dist/browser.d.mts +62 -0
- package/dist/browser.d.mts.map +1 -0
- package/dist/browser.mjs +147 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/context.cjs +80 -0
- package/dist/context.cjs.map +1 -0
- package/dist/context.d.cts +55 -0
- package/dist/context.d.cts.map +1 -0
- package/dist/context.d.mts +55 -0
- package/dist/context.d.mts.map +1 -0
- package/dist/context.mjs +73 -0
- package/dist/context.mjs.map +1 -0
- package/dist/faker.cjs +313 -8
- package/dist/faker.cjs.map +1 -0
- package/dist/faker.d.cts +169 -2
- package/dist/faker.d.cts.map +1 -0
- package/dist/faker.d.mts +169 -2
- package/dist/faker.d.mts.map +1 -0
- package/dist/faker.mjs +305 -2
- package/dist/faker.mjs.map +1 -0
- package/dist/helpers.cjs +6 -5
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +1 -5
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.mts +1 -5
- package/dist/helpers.d.mts.map +1 -1
- package/dist/helpers.mjs +1 -2
- package/dist/helpers.mjs.map +1 -1
- package/dist/initScript.cjs +15 -15
- package/dist/initScript.cjs.map +1 -1
- package/dist/initScript.d.cts +2 -4
- package/dist/initScript.d.cts.map +1 -1
- package/dist/initScript.d.mts +2 -4
- package/dist/initScript.d.mts.map +1 -1
- package/dist/initScript.mjs +10 -12
- package/dist/initScript.mjs.map +1 -1
- package/dist/kysely.cjs +10 -13
- package/dist/kysely.cjs.map +1 -1
- package/dist/kysely.d.cts +10 -14
- package/dist/kysely.d.cts.map +1 -1
- package/dist/kysely.d.mts +10 -14
- package/dist/kysely.d.mts.map +1 -1
- package/dist/kysely.mjs +10 -14
- package/dist/kysely.mjs.map +1 -1
- package/dist/logger.cjs +3 -4
- package/dist/logger.cjs.map +1 -1
- package/dist/logger.d.cts +1 -5
- package/dist/logger.d.cts.map +1 -1
- package/dist/logger.d.mts +1 -5
- package/dist/logger.d.mts.map +1 -1
- package/dist/logger.mjs +1 -2
- package/dist/logger.mjs.map +1 -1
- package/dist/mailbox.cjs +95 -0
- package/dist/mailbox.cjs.map +1 -0
- package/dist/mailbox.d.cts +58 -0
- package/dist/mailbox.d.cts.map +1 -0
- package/dist/mailbox.d.mts +58 -0
- package/dist/mailbox.d.mts.map +1 -0
- package/dist/mailbox.mjs +92 -0
- package/dist/mailbox.mjs.map +1 -0
- package/dist/objection.cjs +10 -13
- package/dist/objection.cjs.map +1 -1
- package/dist/objection.d.cts +10 -14
- package/dist/objection.d.cts.map +1 -1
- package/dist/objection.d.mts +10 -14
- package/dist/objection.d.mts.map +1 -1
- package/dist/objection.mjs +10 -14
- package/dist/objection.mjs.map +1 -1
- package/dist/os/directory.cjs +31 -2
- package/dist/os/directory.cjs.map +1 -0
- package/dist/os/directory.d.cts +9 -2
- package/dist/os/directory.d.cts.map +1 -0
- package/dist/os/directory.d.mts +9 -2
- package/dist/os/directory.d.mts.map +1 -0
- package/dist/os/directory.mjs +25 -2
- package/dist/os/directory.mjs.map +1 -0
- package/dist/os/index.cjs +3 -3
- package/dist/os/index.d.cts +1 -1
- package/dist/os/index.d.mts +1 -1
- package/dist/os/index.mjs +2 -3
- package/dist/requestContext.cjs +10 -11
- package/dist/requestContext.cjs.map +1 -1
- package/dist/requestContext.d.cts +4 -8
- package/dist/requestContext.d.cts.map +1 -1
- package/dist/requestContext.d.mts +4 -8
- package/dist/requestContext.d.mts.map +1 -1
- package/dist/requestContext.mjs +1 -2
- package/dist/requestContext.mjs.map +1 -1
- package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
- package/dist/timer.cjs +2 -2
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.d.cts +1 -4
- package/dist/timer.d.cts.map +1 -1
- package/dist/timer.d.mts +1 -4
- package/dist/timer.d.mts.map +1 -1
- package/dist/timer.mjs +1 -1
- package/dist/timer.mjs.map +1 -1
- package/dist/transactions.cjs +239 -0
- package/dist/transactions.cjs.map +1 -0
- package/dist/transactions.d.cts +44 -0
- package/dist/transactions.d.cts.map +1 -0
- package/dist/transactions.d.mts +44 -0
- package/dist/transactions.d.mts.map +1 -0
- package/dist/transactions.mjs +234 -0
- package/dist/transactions.mjs.map +1 -0
- package/package.json +54 -8
- package/dist/Factory-BFVnMMCC.mjs +0 -51
- package/dist/Factory-BFVnMMCC.mjs.map +0 -1
- package/dist/Factory-BhjUOBWN.cjs +0 -57
- package/dist/Factory-BhjUOBWN.cjs.map +0 -1
- package/dist/Factory-Bx0AJXZB.d.cts +0 -147
- package/dist/Factory-Bx0AJXZB.d.cts.map +0 -1
- package/dist/Factory-_w0_BN4J.d.mts +0 -147
- package/dist/Factory-_w0_BN4J.d.mts.map +0 -1
- package/dist/KyselyFactory-BFqVIn_0.cjs +0 -246
- package/dist/KyselyFactory-BFqVIn_0.cjs.map +0 -1
- package/dist/KyselyFactory-BFxq2hz5.d.mts +0 -228
- package/dist/KyselyFactory-BFxq2hz5.d.mts.map +0 -1
- package/dist/KyselyFactory-DMswpwji.mjs +0 -241
- package/dist/KyselyFactory-DMswpwji.mjs.map +0 -1
- package/dist/KyselyFactory-KLeKH43i.d.cts +0 -228
- package/dist/KyselyFactory-KLeKH43i.d.cts.map +0 -1
- package/dist/ObjectionFactory-BeFBYcan.cjs +0 -272
- package/dist/ObjectionFactory-BeFBYcan.cjs.map +0 -1
- package/dist/ObjectionFactory-C4IsQ_wj.d.mts +0 -241
- package/dist/ObjectionFactory-C4IsQ_wj.d.mts.map +0 -1
- package/dist/ObjectionFactory-QCJ7u0Ql.mjs +0 -267
- package/dist/ObjectionFactory-QCJ7u0Ql.mjs.map +0 -1
- package/dist/ObjectionFactory-aMGvAKt9.d.cts +0 -241
- package/dist/ObjectionFactory-aMGvAKt9.d.cts.map +0 -1
- package/dist/PostgresKyselyMigrator-B2M6Gjvv.d.cts +0 -84
- package/dist/PostgresKyselyMigrator-B2M6Gjvv.d.cts.map +0 -1
- package/dist/PostgresKyselyMigrator-BGBxjnFv.cjs +0 -101
- package/dist/PostgresKyselyMigrator-BGBxjnFv.cjs.map +0 -1
- package/dist/PostgresKyselyMigrator-CvwXycJE.d.mts +0 -84
- package/dist/PostgresKyselyMigrator-CvwXycJE.d.mts.map +0 -1
- package/dist/PostgresKyselyMigrator-PI0QhvB1.mjs +0 -95
- package/dist/PostgresKyselyMigrator-PI0QhvB1.mjs.map +0 -1
- package/dist/PostgresMigrator-C_QQ6q35.d.mts.map +0 -1
- package/dist/PostgresMigrator-CeYy-eHF.d.cts.map +0 -1
- package/dist/PostgresMigrator-DVAY04qN.mjs +0 -166
- package/dist/PostgresMigrator-DVAY04qN.mjs.map +0 -1
- package/dist/PostgresMigrator-M9jpzOvN.cjs +0 -172
- package/dist/PostgresMigrator-M9jpzOvN.cjs.map +0 -1
- package/dist/PostgresObjectionMigrator-1j6YIB1c.d.mts +0 -79
- package/dist/PostgresObjectionMigrator-1j6YIB1c.d.mts.map +0 -1
- package/dist/PostgresObjectionMigrator-DHVC9h_P.d.cts +0 -79
- package/dist/PostgresObjectionMigrator-DHVC9h_P.d.cts.map +0 -1
- package/dist/PostgresObjectionMigrator-DSaPhwjY.cjs +0 -123
- package/dist/PostgresObjectionMigrator-DSaPhwjY.cjs.map +0 -1
- package/dist/PostgresObjectionMigrator-DjPKdUbm.mjs +0 -118
- package/dist/PostgresObjectionMigrator-DjPKdUbm.mjs.map +0 -1
- package/dist/VitestKyselyTransactionIsolator-1Saieke7.mjs +0 -67
- package/dist/VitestKyselyTransactionIsolator-1Saieke7.mjs.map +0 -1
- package/dist/VitestKyselyTransactionIsolator-BjJSXryR.cjs +0 -72
- package/dist/VitestKyselyTransactionIsolator-BjJSXryR.cjs.map +0 -1
- package/dist/VitestKyselyTransactionIsolator-CwlTo6yf.d.mts +0 -64
- package/dist/VitestKyselyTransactionIsolator-CwlTo6yf.d.mts.map +0 -1
- package/dist/VitestKyselyTransactionIsolator-DJasVuIZ.d.cts +0 -64
- package/dist/VitestKyselyTransactionIsolator-DJasVuIZ.d.cts.map +0 -1
- package/dist/VitestObjectionTransactionIsolator-B_VSWFum.mjs +0 -63
- package/dist/VitestObjectionTransactionIsolator-B_VSWFum.mjs.map +0 -1
- package/dist/VitestObjectionTransactionIsolator-CTTjvTPO.d.cts +0 -60
- package/dist/VitestObjectionTransactionIsolator-CTTjvTPO.d.cts.map +0 -1
- package/dist/VitestObjectionTransactionIsolator-CyZG6nq4.d.mts +0 -60
- package/dist/VitestObjectionTransactionIsolator-CyZG6nq4.d.mts.map +0 -1
- package/dist/VitestObjectionTransactionIsolator-DDoJTu7e.cjs +0 -68
- package/dist/VitestObjectionTransactionIsolator-DDoJTu7e.cjs.map +0 -1
- package/dist/VitestTransactionIsolator-BLaw80cx.d.mts +0 -223
- package/dist/VitestTransactionIsolator-BLaw80cx.d.mts.map +0 -1
- package/dist/VitestTransactionIsolator-CvwPecpl.mjs +0 -188
- package/dist/VitestTransactionIsolator-CvwPecpl.mjs.map +0 -1
- package/dist/VitestTransactionIsolator-DyiX-QtK.cjs +0 -206
- package/dist/VitestTransactionIsolator-DyiX-QtK.cjs.map +0 -1
- package/dist/VitestTransactionIsolator-glcxyS_R.d.cts +0 -223
- package/dist/VitestTransactionIsolator-glcxyS_R.d.cts.map +0 -1
- package/dist/directory-BdtgUNT5.d.mts +0 -13
- package/dist/directory-BdtgUNT5.d.mts.map +0 -1
- package/dist/directory-BxjqmtCT.mjs +0 -27
- package/dist/directory-BxjqmtCT.mjs.map +0 -1
- package/dist/directory-C6DuuNyc.d.cts +0 -13
- package/dist/directory-C6DuuNyc.d.cts.map +0 -1
- package/dist/directory-DD_xQoSh.cjs +0 -33
- package/dist/directory-DD_xQoSh.cjs.map +0 -1
- package/dist/faker-B14IEMIN.cjs +0 -304
- package/dist/faker-B14IEMIN.cjs.map +0 -1
- package/dist/faker-BGKYFoCT.mjs +0 -262
- package/dist/faker-BGKYFoCT.mjs.map +0 -1
- package/dist/faker-BSH1EMtg.d.cts +0 -166
- package/dist/faker-BSH1EMtg.d.cts.map +0 -1
- package/dist/faker-Br8MzXil.d.mts +0 -166
- package/dist/faker-Br8MzXil.d.mts.map +0 -1
package/dist/os/directory.cjs
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_rolldown_runtime = require("../rolldown-runtime-VH7oDXx4.cjs");
|
|
3
|
+
let vitest = require("vitest");
|
|
4
|
+
let node_crypto = require("node:crypto");
|
|
5
|
+
node_crypto = require_rolldown_runtime.__toESM(node_crypto, 1);
|
|
6
|
+
let node_fs_promises = require("node:fs/promises");
|
|
7
|
+
node_fs_promises = require_rolldown_runtime.__toESM(node_fs_promises, 1);
|
|
8
|
+
let node_os = require("node:os");
|
|
9
|
+
node_os = require_rolldown_runtime.__toESM(node_os, 1);
|
|
10
|
+
let node_path = require("node:path");
|
|
11
|
+
node_path = require_rolldown_runtime.__toESM(node_path, 1);
|
|
12
|
+
//#region src/os/directory.ts
|
|
13
|
+
const itWithDir = vitest.it.extend({ dir: async ({}, use) => {
|
|
14
|
+
const tempDir = node_os.default.tmpdir();
|
|
15
|
+
const directoryName = node_crypto.default.randomUUID().replace(/-/g, "").toUpperCase();
|
|
16
|
+
const dir = node_path.default.join(tempDir, directoryName);
|
|
17
|
+
await node_fs_promises.default.mkdir(dir, { recursive: true });
|
|
18
|
+
await use(dir);
|
|
19
|
+
await node_fs_promises.default.rm(dir, {
|
|
20
|
+
recursive: true,
|
|
21
|
+
force: true
|
|
22
|
+
});
|
|
23
|
+
const keystoreDir = node_path.default.join(node_os.default.homedir(), ".gkm", directoryName);
|
|
24
|
+
await node_fs_promises.default.rm(keystoreDir, {
|
|
25
|
+
recursive: true,
|
|
26
|
+
force: true
|
|
27
|
+
});
|
|
28
|
+
} });
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.itWithDir = itWithDir;
|
|
2
31
|
|
|
3
|
-
|
|
32
|
+
//# sourceMappingURL=directory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.cjs","names":["it","os","crypto","path","fs"],"sources":["../../src/os/directory.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { it } from 'vitest';\n\nexport const itWithDir = it.extend<DirectoryFixtures>({\n\t// This fixture automatically provides a transaction to each test\n\t// biome-ignore lint/correctness/noEmptyPattern: this has to be like this to satisfy Biome\n\tdir: async ({}, use) => {\n\t\tconst tempDir = os.tmpdir();\n\t\tconst directoryName = crypto.randomUUID().replace(/-/g, '').toUpperCase();\n\t\tconst dir = path.join(tempDir, directoryName);\n\t\tawait fs.mkdir(dir, { recursive: true });\n\t\tawait use(dir);\n\t\tawait fs.rm(dir, { recursive: true, force: true });\n\n\t\t// Clean up keystore directory that may have been created at ~/.gkm/{directoryName}\n\t\tconst keystoreDir = path.join(os.homedir(), '.gkm', directoryName);\n\t\tawait fs.rm(keystoreDir, { recursive: true, force: true });\n\t},\n});\n\nexport interface DirectoryFixtures {\n\tdir: string;\n}\n"],"mappings":";;;;;;;;;;;;AAMA,MAAa,YAAYA,OAAAA,GAAG,OAA0B,EAGrD,KAAK,OAAO,IAAI,QAAQ;CACvB,MAAM,UAAUC,QAAAA,QAAG,OAAO;CAC1B,MAAM,gBAAgBC,YAAAA,QAAO,WAAW,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,YAAY;CACxE,MAAM,MAAMC,UAAAA,QAAK,KAAK,SAAS,aAAa;CAC5C,MAAMC,iBAAAA,QAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;CACvC,MAAM,IAAI,GAAG;CACb,MAAMA,iBAAAA,QAAG,GAAG,KAAK;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;CAGjD,MAAM,cAAcD,UAAAA,QAAK,KAAKF,QAAAA,QAAG,QAAQ,GAAG,QAAQ,aAAa;CACjE,MAAMG,iBAAAA,QAAG,GAAG,aAAa;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;AAC1D,EACD,CAAC"}
|
package/dist/os/directory.d.cts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
//#region src/os/directory.d.ts
|
|
2
|
+
export declare const itWithDir: import("vitest").TestAPI<{
|
|
3
|
+
dir: string;
|
|
4
|
+
}>;
|
|
5
|
+
export interface DirectoryFixtures {
|
|
6
|
+
dir: string;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=directory.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.d.cts","names":[],"sources":["../../src/os/directory.ts"],"mappings":";qBAMa,4BAAS;EAAA;;iBAiBL;EAChB"}
|
package/dist/os/directory.d.mts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
//#region src/os/directory.d.ts
|
|
2
|
+
export declare const itWithDir: import("vitest").TestAPI<{
|
|
3
|
+
dir: string;
|
|
4
|
+
}>;
|
|
5
|
+
export interface DirectoryFixtures {
|
|
6
|
+
dir: string;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=directory.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.d.mts","names":[],"sources":["../../src/os/directory.ts"],"mappings":";qBAMa,4BAAS;EAAA;;iBAiBL;EAChB"}
|
package/dist/os/directory.mjs
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { it } from "vitest";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
//#region src/os/directory.ts
|
|
7
|
+
const itWithDir = it.extend({ dir: async ({}, use) => {
|
|
8
|
+
const tempDir = os.tmpdir();
|
|
9
|
+
const directoryName = crypto.randomUUID().replace(/-/g, "").toUpperCase();
|
|
10
|
+
const dir = path.join(tempDir, directoryName);
|
|
11
|
+
await fs.mkdir(dir, { recursive: true });
|
|
12
|
+
await use(dir);
|
|
13
|
+
await fs.rm(dir, {
|
|
14
|
+
recursive: true,
|
|
15
|
+
force: true
|
|
16
|
+
});
|
|
17
|
+
const keystoreDir = path.join(os.homedir(), ".gkm", directoryName);
|
|
18
|
+
await fs.rm(keystoreDir, {
|
|
19
|
+
recursive: true,
|
|
20
|
+
force: true
|
|
21
|
+
});
|
|
22
|
+
} });
|
|
23
|
+
//#endregion
|
|
24
|
+
export { itWithDir };
|
|
2
25
|
|
|
3
|
-
|
|
26
|
+
//# sourceMappingURL=directory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.mjs","names":[],"sources":["../../src/os/directory.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { it } from 'vitest';\n\nexport const itWithDir = it.extend<DirectoryFixtures>({\n\t// This fixture automatically provides a transaction to each test\n\t// biome-ignore lint/correctness/noEmptyPattern: this has to be like this to satisfy Biome\n\tdir: async ({}, use) => {\n\t\tconst tempDir = os.tmpdir();\n\t\tconst directoryName = crypto.randomUUID().replace(/-/g, '').toUpperCase();\n\t\tconst dir = path.join(tempDir, directoryName);\n\t\tawait fs.mkdir(dir, { recursive: true });\n\t\tawait use(dir);\n\t\tawait fs.rm(dir, { recursive: true, force: true });\n\n\t\t// Clean up keystore directory that may have been created at ~/.gkm/{directoryName}\n\t\tconst keystoreDir = path.join(os.homedir(), '.gkm', directoryName);\n\t\tawait fs.rm(keystoreDir, { recursive: true, force: true });\n\t},\n});\n\nexport interface DirectoryFixtures {\n\tdir: string;\n}\n"],"mappings":";;;;;;AAMA,MAAa,YAAY,GAAG,OAA0B,EAGrD,KAAK,OAAO,IAAI,QAAQ;CACvB,MAAM,UAAU,GAAG,OAAO;CAC1B,MAAM,gBAAgB,OAAO,WAAW,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,YAAY;CACxE,MAAM,MAAM,KAAK,KAAK,SAAS,aAAa;CAC5C,MAAM,GAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;CACvC,MAAM,IAAI,GAAG;CACb,MAAM,GAAG,GAAG,KAAK;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;CAGjD,MAAM,cAAc,KAAK,KAAK,GAAG,QAAQ,GAAG,QAAQ,aAAa;CACjE,MAAM,GAAG,GAAG,aAAa;EAAE,WAAW;EAAM,OAAO;CAAK,CAAC;AAC1D,EACD,CAAC"}
|
package/dist/os/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.itWithDir =
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_os_directory = require("./directory.cjs");
|
|
3
|
+
exports.itWithDir = require_os_directory.itWithDir;
|
package/dist/os/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { itWithDir } from "
|
|
1
|
+
import { itWithDir } from "./directory.cjs";
|
|
2
2
|
export { itWithDir };
|
package/dist/os/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { itWithDir } from "
|
|
1
|
+
import { itWithDir } from "./directory.mjs";
|
|
2
2
|
export { itWithDir };
|
package/dist/os/index.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { itWithDir } from "
|
|
2
|
-
|
|
3
|
-
export { itWithDir };
|
|
1
|
+
import { itWithDir } from "./directory.mjs";
|
|
2
|
+
export { itWithDir };
|
package/dist/requestContext.cjs
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let _geekmidas_services = require("@geekmidas/services");
|
|
3
|
+
let node_crypto = require("node:crypto");
|
|
4
|
+
let _geekmidas_logger_console = require("@geekmidas/logger/console");
|
|
6
5
|
//#region src/requestContext.ts
|
|
7
6
|
function resolveContext(opts = {}) {
|
|
8
7
|
return {
|
|
9
|
-
logger: opts.logger ?? new
|
|
8
|
+
logger: opts.logger ?? new _geekmidas_logger_console.ConsoleLogger({ app: "test" }),
|
|
10
9
|
requestId: opts.requestId ?? (0, node_crypto.randomUUID)(),
|
|
11
10
|
startTime: opts.startTime ?? Date.now()
|
|
12
11
|
};
|
|
@@ -24,7 +23,7 @@ function resolveContext(opts = {}) {
|
|
|
24
23
|
* ```
|
|
25
24
|
*/
|
|
26
25
|
function runInRequestContext(fn, opts = {}) {
|
|
27
|
-
return (0,
|
|
26
|
+
return (0, _geekmidas_services.runWithRequestContext)(resolveContext(opts), fn);
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
29
|
* Vitest fixture creator. Spread the result into `.extend()` and every test
|
|
@@ -43,11 +42,11 @@ function runInRequestContext(fn, opts = {}) {
|
|
|
43
42
|
*/
|
|
44
43
|
function requestContextFixture(opts = {}) {
|
|
45
44
|
return { requestContext: [async ({}, use) => {
|
|
46
|
-
(0,
|
|
45
|
+
(0, _geekmidas_services.enterRequestContext)(resolveContext(opts));
|
|
47
46
|
try {
|
|
48
|
-
await use(
|
|
47
|
+
await use(_geekmidas_services.serviceContext);
|
|
49
48
|
} finally {
|
|
50
|
-
(0,
|
|
49
|
+
(0, _geekmidas_services.exitRequestContext)();
|
|
51
50
|
}
|
|
52
51
|
}, { auto: true }] };
|
|
53
52
|
}
|
|
@@ -72,9 +71,9 @@ function requestContextFixture(opts = {}) {
|
|
|
72
71
|
function withRequestContext(testApi, opts = {}) {
|
|
73
72
|
return testApi.extend(requestContextFixture(opts));
|
|
74
73
|
}
|
|
75
|
-
|
|
76
74
|
//#endregion
|
|
77
75
|
exports.requestContextFixture = requestContextFixture;
|
|
78
76
|
exports.runInRequestContext = runInRequestContext;
|
|
79
77
|
exports.withRequestContext = withRequestContext;
|
|
78
|
+
|
|
80
79
|
//# sourceMappingURL=requestContext.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestContext.cjs","names":["
|
|
1
|
+
{"version":3,"file":"requestContext.cjs","names":["ConsoleLogger","randomUUID","runWithRequestContext","serviceContext"],"sources":["../src/requestContext.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport {\n\tenterRequestContext,\n\texitRequestContext,\n\trunWithRequestContext,\n\ttype ServiceContext,\n\tserviceContext,\n} from '@geekmidas/services';\nimport type { TestAPI } from 'vitest';\n\n/**\n * Options for setting up a request context in tests. Any field omitted\n * is filled with a test-friendly default (ConsoleLogger, random UUID,\n * Date.now()).\n */\nexport interface RequestContextOptions {\n\t/** Logger exposed via serviceContext.getLogger(). */\n\tlogger?: Logger;\n\t/** Request id exposed via serviceContext.getRequestId(). */\n\trequestId?: string;\n\t/** Start time exposed via serviceContext.getRequestStartTime(). */\n\tstartTime?: number;\n}\n\nfunction resolveContext(opts: RequestContextOptions = {}) {\n\treturn {\n\t\tlogger: opts.logger ?? new ConsoleLogger({ app: 'test' }),\n\t\trequestId: opts.requestId ?? randomUUID(),\n\t\tstartTime: opts.startTime ?? Date.now(),\n\t};\n}\n\n/**\n * Run a function inside a request context with test-friendly defaults.\n * Useful when you need `serviceContext` to be available for a single call\n * (e.g. invoking `Service.register({ context })` outside a wrapped test).\n *\n * @example\n * ```ts\n * await runInRequestContext(() =>\n * discovery.register([databaseService]),\n * );\n * ```\n */\nexport function runInRequestContext<T>(\n\tfn: () => T | Promise<T>,\n\topts: RequestContextOptions = {},\n): T | Promise<T> {\n\treturn runWithRequestContext(resolveContext(opts), fn);\n}\n\n/**\n * Vitest fixture creator. Spread the result into `.extend()` and every test\n * runs inside `runWithRequestContext`, even tests that don't destructure\n * `requestContext` directly (the fixture is registered as `auto`).\n *\n * @example\n * ```ts\n * const it = test.extend({ ...requestContextFixture() });\n *\n * it('registers services with context', async ({ requestContext }) => {\n * await discovery.register([databaseService]);\n * expect(requestContext.getRequestId()).toBeDefined();\n * });\n * ```\n */\nexport function requestContextFixture(opts: RequestContextOptions = {}) {\n\treturn {\n\t\trequestContext: [\n\t\t\tasync (\n\t\t\t\t// biome-ignore lint/correctness/noEmptyPattern: vitest fixture signature\n\t\t\t\t{}: {},\n\t\t\t\tuse: (value: ServiceContext) => Promise<void>,\n\t\t\t) => {\n\t\t\t\t// Vitest suspends the fixture on `await use(...)` and runs the test\n\t\t\t\t// body in a continuation of the runner's async context. A scoped\n\t\t\t\t// `runWithRequestContext` callback ends as soon as we hand control\n\t\t\t\t// to the runner, so the test body would see no context. Instead,\n\t\t\t\t// mutate the current task's store with `enterRequestContext` —\n\t\t\t\t// async/await preserves that store across the suspension, so the\n\t\t\t\t// test body sees it. We restore on the way out so subsequent tests\n\t\t\t\t// don't inherit the value.\n\t\t\t\tenterRequestContext(resolveContext(opts));\n\t\t\t\ttry {\n\t\t\t\t\tawait use(serviceContext);\n\t\t\t\t} finally {\n\t\t\t\t\texitRequestContext();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ auto: true },\n\t\t] as const,\n\t};\n}\n\n/**\n * Wrap any Vitest `TestAPI` (including the one returned by\n * `wrapVitestKyselyTransaction`) so every test runs inside\n * `runWithRequestContext`. Compose with the transaction wrappers:\n *\n * @example\n * ```ts\n * import { wrapVitestKyselyTransaction } from '@geekmidas/testkit/kysely';\n * import { withRequestContext } from '@geekmidas/testkit/request-context';\n *\n * const baseIt = wrapVitestKyselyTransaction<DB>(it, { connection: db });\n * const itWithCtx = withRequestContext(baseIt);\n *\n * itWithCtx('runs inside trx + context', async ({ trx, requestContext }) => {\n * // serviceContext is set up; Service.register({ context }) works here.\n * });\n * ```\n */\nexport function withRequestContext<\n\tT extends TestAPI | ReturnType<TestAPI['extend']>,\n>(testApi: T, opts: RequestContextOptions = {}): T {\n\treturn (testApi as any).extend(requestContextFixture(opts));\n}\n"],"mappings":";;;;;AA0BA,SAAS,eAAe,OAA8B,CAAC,GAAG;CACzD,OAAO;EACN,QAAQ,KAAK,UAAU,IAAIA,0BAAAA,cAAc,EAAE,KAAK,OAAO,CAAC;EACxD,WAAW,KAAK,cAAA,GAAaC,YAAAA,WAAAA,CAAW;EACxC,WAAW,KAAK,aAAa,KAAK,IAAI;CACvC;AACD;;;;;;;;;;;;;AAcA,SAAgB,oBACf,IACA,OAA8B,CAAC,GACd;CACjB,QAAA,GAAOC,oBAAAA,sBAAAA,CAAsB,eAAe,IAAI,GAAG,EAAE;AACtD;;;;;;;;;;;;;;;;AAiBA,SAAgB,sBAAsB,OAA8B,CAAC,GAAG;CACvE,OAAO,EACN,gBAAgB,CACf,OAEC,IACA,QACI;EASJ,CAAA,GAAA,oBAAA,oBAAA,CAAoB,eAAe,IAAI,CAAC;EACxC,IAAI;GACH,MAAM,IAAIC,oBAAAA,cAAc;EACzB,UAAU;GACT,CAAA,GAAA,oBAAA,mBAAA,CAAmB;EACpB;CACD,GACA,EAAE,MAAM,KAAK,CACd,EACD;AACD;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,mBAEd,SAAY,OAA8B,CAAC,GAAM;CAClD,OAAQ,QAAgB,OAAO,sBAAsB,IAAI,CAAC;AAC3D"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { ServiceContext } from "@geekmidas/services";
|
|
2
2
|
import { TestAPI } from "vitest";
|
|
3
3
|
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
|
|
5
4
|
//#region src/requestContext.d.ts
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Options for setting up a request context in tests. Any field omitted
|
|
9
7
|
* is filled with a test-friendly default (ConsoleLogger, random UUID,
|
|
10
8
|
* Date.now()).
|
|
11
9
|
*/
|
|
12
|
-
interface RequestContextOptions {
|
|
10
|
+
export interface RequestContextOptions {
|
|
13
11
|
/** Logger exposed via serviceContext.getLogger(). */
|
|
14
12
|
logger?: Logger;
|
|
15
13
|
/** Request id exposed via serviceContext.getRequestId(). */
|
|
@@ -29,7 +27,7 @@ interface RequestContextOptions {
|
|
|
29
27
|
* );
|
|
30
28
|
* ```
|
|
31
29
|
*/
|
|
32
|
-
declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: RequestContextOptions): T | Promise<T>;
|
|
30
|
+
export declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: RequestContextOptions): T | Promise<T>;
|
|
33
31
|
/**
|
|
34
32
|
* Vitest fixture creator. Spread the result into `.extend()` and every test
|
|
35
33
|
* runs inside `runWithRequestContext`, even tests that don't destructure
|
|
@@ -45,7 +43,7 @@ declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: Request
|
|
|
45
43
|
* });
|
|
46
44
|
* ```
|
|
47
45
|
*/
|
|
48
|
-
declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
46
|
+
export declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
49
47
|
requestContext: readonly [({}: {}, use: (value: ServiceContext) => Promise<void>) => Promise<void>, {
|
|
50
48
|
readonly auto: true;
|
|
51
49
|
}];
|
|
@@ -68,8 +66,6 @@ declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
|
68
66
|
* });
|
|
69
67
|
* ```
|
|
70
68
|
*/
|
|
71
|
-
declare function withRequestContext<T extends TestAPI | ReturnType<TestAPI['extend']>>(testApi: T, opts?: RequestContextOptions): T;
|
|
72
|
-
//# sourceMappingURL=requestContext.d.ts.map
|
|
69
|
+
export declare function withRequestContext<T extends TestAPI | ReturnType<TestAPI['extend']>>(testApi: T, opts?: RequestContextOptions): T;
|
|
73
70
|
//#endregion
|
|
74
|
-
export { RequestContextOptions, requestContextFixture, runInRequestContext, withRequestContext };
|
|
75
71
|
//# sourceMappingURL=requestContext.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestContext.d.cts","names":[],"sources":["../src/requestContext.ts"],"
|
|
1
|
+
{"version":3,"file":"requestContext.d.cts","names":[],"sources":["../src/requestContext.ts"],"mappings":";;;;;;;;;iBAiBiB;;EAEhB,SAAS;;EAET;;EAEA;;;;;;;;;;;;;;wBAuBe,oBAAoB,GACnC,UAAU,IAAI,QAAQ,IACtB,OAAM,wBACJ,IAAI,QAAQ;;;;;;;;;;;;;;;;wBAmBC,sBAAsB,OAAM;EAE1C,mCAGQ,MACA,OAAO,mBAAmB,kBAAa;aAiB5C;;;;;;;;;;;;;;;;;;;;;wBAuBW,mBACf,UAAU,UAAU,WAAW,oBAC9B,SAAS,GAAG,OAAM,wBAA6B"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { ServiceContext } from "@geekmidas/services";
|
|
2
2
|
import { TestAPI } from "vitest";
|
|
3
3
|
import { Logger } from "@geekmidas/logger";
|
|
4
|
-
|
|
5
4
|
//#region src/requestContext.d.ts
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Options for setting up a request context in tests. Any field omitted
|
|
9
7
|
* is filled with a test-friendly default (ConsoleLogger, random UUID,
|
|
10
8
|
* Date.now()).
|
|
11
9
|
*/
|
|
12
|
-
interface RequestContextOptions {
|
|
10
|
+
export interface RequestContextOptions {
|
|
13
11
|
/** Logger exposed via serviceContext.getLogger(). */
|
|
14
12
|
logger?: Logger;
|
|
15
13
|
/** Request id exposed via serviceContext.getRequestId(). */
|
|
@@ -29,7 +27,7 @@ interface RequestContextOptions {
|
|
|
29
27
|
* );
|
|
30
28
|
* ```
|
|
31
29
|
*/
|
|
32
|
-
declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: RequestContextOptions): T | Promise<T>;
|
|
30
|
+
export declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: RequestContextOptions): T | Promise<T>;
|
|
33
31
|
/**
|
|
34
32
|
* Vitest fixture creator. Spread the result into `.extend()` and every test
|
|
35
33
|
* runs inside `runWithRequestContext`, even tests that don't destructure
|
|
@@ -45,7 +43,7 @@ declare function runInRequestContext<T>(fn: () => T | Promise<T>, opts?: Request
|
|
|
45
43
|
* });
|
|
46
44
|
* ```
|
|
47
45
|
*/
|
|
48
|
-
declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
46
|
+
export declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
49
47
|
requestContext: readonly [({}: {}, use: (value: ServiceContext) => Promise<void>) => Promise<void>, {
|
|
50
48
|
readonly auto: true;
|
|
51
49
|
}];
|
|
@@ -68,8 +66,6 @@ declare function requestContextFixture(opts?: RequestContextOptions): {
|
|
|
68
66
|
* });
|
|
69
67
|
* ```
|
|
70
68
|
*/
|
|
71
|
-
declare function withRequestContext<T extends TestAPI | ReturnType<TestAPI['extend']>>(testApi: T, opts?: RequestContextOptions): T;
|
|
72
|
-
//# sourceMappingURL=requestContext.d.ts.map
|
|
69
|
+
export declare function withRequestContext<T extends TestAPI | ReturnType<TestAPI['extend']>>(testApi: T, opts?: RequestContextOptions): T;
|
|
73
70
|
//#endregion
|
|
74
|
-
export { RequestContextOptions, requestContextFixture, runInRequestContext, withRequestContext };
|
|
75
71
|
//# sourceMappingURL=requestContext.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestContext.d.mts","names":[],"sources":["../src/requestContext.ts"],"
|
|
1
|
+
{"version":3,"file":"requestContext.d.mts","names":[],"sources":["../src/requestContext.ts"],"mappings":";;;;;;;;;iBAiBiB;;EAEhB,SAAS;;EAET;;EAEA;;;;;;;;;;;;;;wBAuBe,oBAAoB,GACnC,UAAU,IAAI,QAAQ,IACtB,OAAM,wBACJ,IAAI,QAAQ;;;;;;;;;;;;;;;;wBAmBC,sBAAsB,OAAM;EAE1C,mCAGQ,MACA,OAAO,mBAAmB,kBAAa;aAiB5C;;;;;;;;;;;;;;;;;;;;;wBAuBW,mBACf,UAAU,UAAU,WAAW,oBAC9B,SAAS,GAAG,OAAM,wBAA6B"}
|
package/dist/requestContext.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { enterRequestContext, exitRequestContext, runWithRequestContext, serviceContext } from "@geekmidas/services";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { ConsoleLogger } from "@geekmidas/logger/console";
|
|
4
|
-
|
|
5
4
|
//#region src/requestContext.ts
|
|
6
5
|
function resolveContext(opts = {}) {
|
|
7
6
|
return {
|
|
@@ -71,7 +70,7 @@ function requestContextFixture(opts = {}) {
|
|
|
71
70
|
function withRequestContext(testApi, opts = {}) {
|
|
72
71
|
return testApi.extend(requestContextFixture(opts));
|
|
73
72
|
}
|
|
74
|
-
|
|
75
73
|
//#endregion
|
|
76
74
|
export { requestContextFixture, runInRequestContext, withRequestContext };
|
|
75
|
+
|
|
77
76
|
//# sourceMappingURL=requestContext.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestContext.mjs","names":[
|
|
1
|
+
{"version":3,"file":"requestContext.mjs","names":[],"sources":["../src/requestContext.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { Logger } from '@geekmidas/logger';\nimport { ConsoleLogger } from '@geekmidas/logger/console';\nimport {\n\tenterRequestContext,\n\texitRequestContext,\n\trunWithRequestContext,\n\ttype ServiceContext,\n\tserviceContext,\n} from '@geekmidas/services';\nimport type { TestAPI } from 'vitest';\n\n/**\n * Options for setting up a request context in tests. Any field omitted\n * is filled with a test-friendly default (ConsoleLogger, random UUID,\n * Date.now()).\n */\nexport interface RequestContextOptions {\n\t/** Logger exposed via serviceContext.getLogger(). */\n\tlogger?: Logger;\n\t/** Request id exposed via serviceContext.getRequestId(). */\n\trequestId?: string;\n\t/** Start time exposed via serviceContext.getRequestStartTime(). */\n\tstartTime?: number;\n}\n\nfunction resolveContext(opts: RequestContextOptions = {}) {\n\treturn {\n\t\tlogger: opts.logger ?? new ConsoleLogger({ app: 'test' }),\n\t\trequestId: opts.requestId ?? randomUUID(),\n\t\tstartTime: opts.startTime ?? Date.now(),\n\t};\n}\n\n/**\n * Run a function inside a request context with test-friendly defaults.\n * Useful when you need `serviceContext` to be available for a single call\n * (e.g. invoking `Service.register({ context })` outside a wrapped test).\n *\n * @example\n * ```ts\n * await runInRequestContext(() =>\n * discovery.register([databaseService]),\n * );\n * ```\n */\nexport function runInRequestContext<T>(\n\tfn: () => T | Promise<T>,\n\topts: RequestContextOptions = {},\n): T | Promise<T> {\n\treturn runWithRequestContext(resolveContext(opts), fn);\n}\n\n/**\n * Vitest fixture creator. Spread the result into `.extend()` and every test\n * runs inside `runWithRequestContext`, even tests that don't destructure\n * `requestContext` directly (the fixture is registered as `auto`).\n *\n * @example\n * ```ts\n * const it = test.extend({ ...requestContextFixture() });\n *\n * it('registers services with context', async ({ requestContext }) => {\n * await discovery.register([databaseService]);\n * expect(requestContext.getRequestId()).toBeDefined();\n * });\n * ```\n */\nexport function requestContextFixture(opts: RequestContextOptions = {}) {\n\treturn {\n\t\trequestContext: [\n\t\t\tasync (\n\t\t\t\t// biome-ignore lint/correctness/noEmptyPattern: vitest fixture signature\n\t\t\t\t{}: {},\n\t\t\t\tuse: (value: ServiceContext) => Promise<void>,\n\t\t\t) => {\n\t\t\t\t// Vitest suspends the fixture on `await use(...)` and runs the test\n\t\t\t\t// body in a continuation of the runner's async context. A scoped\n\t\t\t\t// `runWithRequestContext` callback ends as soon as we hand control\n\t\t\t\t// to the runner, so the test body would see no context. Instead,\n\t\t\t\t// mutate the current task's store with `enterRequestContext` —\n\t\t\t\t// async/await preserves that store across the suspension, so the\n\t\t\t\t// test body sees it. We restore on the way out so subsequent tests\n\t\t\t\t// don't inherit the value.\n\t\t\t\tenterRequestContext(resolveContext(opts));\n\t\t\t\ttry {\n\t\t\t\t\tawait use(serviceContext);\n\t\t\t\t} finally {\n\t\t\t\t\texitRequestContext();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ auto: true },\n\t\t] as const,\n\t};\n}\n\n/**\n * Wrap any Vitest `TestAPI` (including the one returned by\n * `wrapVitestKyselyTransaction`) so every test runs inside\n * `runWithRequestContext`. Compose with the transaction wrappers:\n *\n * @example\n * ```ts\n * import { wrapVitestKyselyTransaction } from '@geekmidas/testkit/kysely';\n * import { withRequestContext } from '@geekmidas/testkit/request-context';\n *\n * const baseIt = wrapVitestKyselyTransaction<DB>(it, { connection: db });\n * const itWithCtx = withRequestContext(baseIt);\n *\n * itWithCtx('runs inside trx + context', async ({ trx, requestContext }) => {\n * // serviceContext is set up; Service.register({ context }) works here.\n * });\n * ```\n */\nexport function withRequestContext<\n\tT extends TestAPI | ReturnType<TestAPI['extend']>,\n>(testApi: T, opts: RequestContextOptions = {}): T {\n\treturn (testApi as any).extend(requestContextFixture(opts));\n}\n"],"mappings":";;;;AA0BA,SAAS,eAAe,OAA8B,CAAC,GAAG;CACzD,OAAO;EACN,QAAQ,KAAK,UAAU,IAAI,cAAc,EAAE,KAAK,OAAO,CAAC;EACxD,WAAW,KAAK,aAAa,WAAW;EACxC,WAAW,KAAK,aAAa,KAAK,IAAI;CACvC;AACD;;;;;;;;;;;;;AAcA,SAAgB,oBACf,IACA,OAA8B,CAAC,GACd;CACjB,OAAO,sBAAsB,eAAe,IAAI,GAAG,EAAE;AACtD;;;;;;;;;;;;;;;;AAiBA,SAAgB,sBAAsB,OAA8B,CAAC,GAAG;CACvE,OAAO,EACN,gBAAgB,CACf,OAEC,IACA,QACI;EASJ,oBAAoB,eAAe,IAAI,CAAC;EACxC,IAAI;GACH,MAAM,IAAI,cAAc;EACzB,UAAU;GACT,mBAAmB;EACpB;CACD,GACA,EAAE,MAAM,KAAK,CACd,EACD;AACD;;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,mBAEd,SAAY,OAA8B,CAAC,GAAM;CAClD,OAAQ,QAAgB,OAAO,sBAAsB,IAAI,CAAC;AAC3D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -15,16 +15,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
15
|
}
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
19
19
|
value: mod,
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
|
-
|
|
23
22
|
//#endregion
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
23
|
+
Object.defineProperty(exports, "__toESM", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function() {
|
|
26
|
+
return __toESM;
|
|
27
|
+
}
|
|
28
|
+
});
|
package/dist/timer.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
//#region src/timer.ts
|
|
3
3
|
function waitFor(ms) {
|
|
4
4
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
5
5
|
}
|
|
6
|
-
|
|
7
6
|
//#endregion
|
|
8
7
|
exports.waitFor = waitFor;
|
|
8
|
+
|
|
9
9
|
//# sourceMappingURL=timer.cjs.map
|
package/dist/timer.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.cjs","names":[
|
|
1
|
+
{"version":3,"file":"timer.cjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["export function waitFor(ms: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n"],"mappings":";;AAAA,SAAgB,QAAQ,IAAY;CACnC,OAAO,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;AACxD"}
|
package/dist/timer.d.cts
CHANGED
package/dist/timer.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.d.cts","names":[],"sources":["../src/timer.ts"],"
|
|
1
|
+
{"version":3,"file":"timer.d.cts","names":[],"sources":["../src/timer.ts"],"mappings":";wBAAgB,QAAQ,aAAU"}
|
package/dist/timer.d.mts
CHANGED
package/dist/timer.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.d.mts","names":[],"sources":["../src/timer.ts"],"
|
|
1
|
+
{"version":3,"file":"timer.d.mts","names":[],"sources":["../src/timer.ts"],"mappings":";wBAAgB,QAAQ,aAAU"}
|
package/dist/timer.mjs
CHANGED
package/dist/timer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.mjs","names":[
|
|
1
|
+
{"version":3,"file":"timer.mjs","names":[],"sources":["../src/timer.ts"],"sourcesContent":["export function waitFor(ms: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n"],"mappings":";AAAA,SAAgB,QAAQ,IAAY;CACnC,OAAO,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;AACxD"}
|