@aamini/config 0.0.18 → 0.0.19
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/test/db.d.mts +0 -3
- package/dist/test/db.mjs +4 -8
- package/dist/test/db.mjs.map +1 -1
- package/package.json +3 -1
package/dist/test/db.d.mts
CHANGED
|
@@ -8,7 +8,6 @@ import { Pool } from "pg";
|
|
|
8
8
|
interface DbConfig {
|
|
9
9
|
root?: string;
|
|
10
10
|
schemaPath?: string;
|
|
11
|
-
migrationsPath?: string;
|
|
12
11
|
postgresImage?: string;
|
|
13
12
|
}
|
|
14
13
|
type Database = NodePgDatabase & {
|
|
@@ -29,13 +28,11 @@ declare const test: _$vite_plus_test0.TestAPI<{
|
|
|
29
28
|
declare function initDb(seed: (db: Database) => Promise<void> | void, config?: DbConfig): void;
|
|
30
29
|
interface SeedDatabaseOptions {
|
|
31
30
|
schemaPath: string;
|
|
32
|
-
migrationsFolder: string;
|
|
33
31
|
seedFunction?: (db: Database) => Promise<void> | void;
|
|
34
32
|
extensions?: string[];
|
|
35
33
|
}
|
|
36
34
|
declare function seedDatabase(db: Database, {
|
|
37
35
|
schemaPath,
|
|
38
|
-
migrationsFolder,
|
|
39
36
|
seedFunction,
|
|
40
37
|
extensions
|
|
41
38
|
}: SeedDatabaseOptions): Promise<void>;
|
package/dist/test/db.mjs
CHANGED
|
@@ -4,7 +4,6 @@ import { afterEach, beforeEach, describe, expect, test as test$1, vi } from "vit
|
|
|
4
4
|
import { setupServer } from "msw/node";
|
|
5
5
|
//#region src/test/db.ts
|
|
6
6
|
const DEFAULT_SCHEMA_PATH = "src/db/tables.ts";
|
|
7
|
-
const DEFAULT_MIGRATIONS_PATH = "src/db/migrations";
|
|
8
7
|
const DEFAULT_IMAGE = "postgres:17";
|
|
9
8
|
const DEFAULT_EXTENSIONS = ["pg_trgm"];
|
|
10
9
|
const ROOT_MARKERS = [
|
|
@@ -56,16 +55,13 @@ const test = test$1.extend({
|
|
|
56
55
|
const { drizzle } = await import("drizzle-orm/node-postgres");
|
|
57
56
|
const { Wait } = await import("testcontainers");
|
|
58
57
|
const { Pool } = await import("pg");
|
|
59
|
-
const
|
|
60
|
-
const schemaPath = resolve(root, dbConfig.schemaPath ?? DEFAULT_SCHEMA_PATH);
|
|
61
|
-
const migrationsFolder = resolve(root, dbConfig.migrationsPath ?? DEFAULT_MIGRATIONS_PATH);
|
|
58
|
+
const schemaPath = resolve(dbConfig.root ?? findProjectRoot(), dbConfig.schemaPath ?? DEFAULT_SCHEMA_PATH);
|
|
62
59
|
const container = await new PostgreSqlContainer(dbConfig.postgresImage ?? DEFAULT_IMAGE).withWaitStrategy(Wait.forHealthCheck()).start();
|
|
63
60
|
const client = new Pool({ connectionString: container.getConnectionUri() });
|
|
64
61
|
const db = Object.assign(drizzle({ client }), { $client: client });
|
|
65
62
|
try {
|
|
66
63
|
await seedDatabase(db, {
|
|
67
64
|
schemaPath,
|
|
68
|
-
migrationsFolder,
|
|
69
65
|
seedFunction
|
|
70
66
|
});
|
|
71
67
|
await use(db);
|
|
@@ -79,15 +75,15 @@ function initDb(seed, config = {}) {
|
|
|
79
75
|
dbConfig = config;
|
|
80
76
|
seedFunction = seed;
|
|
81
77
|
}
|
|
82
|
-
async function seedDatabase(db, { schemaPath,
|
|
83
|
-
const {
|
|
78
|
+
async function seedDatabase(db, { schemaPath, seedFunction, extensions = DEFAULT_EXTENSIONS }) {
|
|
79
|
+
const { pushSchema } = await import("drizzle-kit/api");
|
|
84
80
|
const { reset } = await import("drizzle-seed");
|
|
85
81
|
const schema = await import(
|
|
86
82
|
/* @vite-ignore */
|
|
87
83
|
schemaPath
|
|
88
84
|
);
|
|
89
85
|
for (const ext of extensions) await db.execute(`CREATE EXTENSION IF NOT EXISTS "${ext}"`);
|
|
90
|
-
await
|
|
86
|
+
await (await pushSchema(schema, db)).apply();
|
|
91
87
|
await reset(db, schema);
|
|
92
88
|
if (seedFunction) await seedFunction(db);
|
|
93
89
|
}
|
package/dist/test/db.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.mjs","names":["baseTest"],"sources":["../../src/test/db.ts"],"sourcesContent":["import { setupServer, type SetupServer } from 'msw/node'\nimport { existsSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { test as baseTest } from 'vite-plus/test'\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres'\nimport type { Pool } from 'pg'\n\nconst DEFAULT_SCHEMA_PATH = 'src/db/tables.ts'\nconst
|
|
1
|
+
{"version":3,"file":"db.mjs","names":["baseTest"],"sources":["../../src/test/db.ts"],"sourcesContent":["import { setupServer, type SetupServer } from 'msw/node'\nimport { existsSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport { test as baseTest } from 'vite-plus/test'\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres'\nimport type { Pool } from 'pg'\n\nconst DEFAULT_SCHEMA_PATH = 'src/db/tables.ts'\nconst DEFAULT_IMAGE = 'postgres:17'\nconst DEFAULT_EXTENSIONS = ['pg_trgm']\nconst ROOT_MARKERS = [\n\t'vite.config.ts',\n\t'vite.config.mts',\n\t'vite.config.js',\n\t'vite.config.mjs',\n\t'vitest.config.ts',\n\t'vitest.config.mts',\n\t'vitest.config.js',\n\t'vitest.config.mjs',\n]\n\nexport interface DbConfig {\n\troot?: string\n\tschemaPath?: string\n\tpostgresImage?: string\n}\n\nexport type Database = NodePgDatabase & {\n\t$client: Pool\n}\n\nexport interface DbFixture {\n\tserver: SetupServer\n\t_cleanup: void\n\tdb: Database\n\tseedFunction: (db: Database) => Promise<void> | void\n}\n\nlet dbConfig: DbConfig = {}\nlet mswServer: SetupServer | undefined\nlet seedFunction: (db: Database) => Promise<void> | void = async () => {}\n\nasync function ensureMswServer(): Promise<SetupServer> {\n\tif (!mswServer) {\n\t\tconst { default: handlers } = await import('@test/handlers')\n\t\tmswServer = setupServer(...handlers)\n\t}\n\treturn mswServer\n}\n\nfunction findProjectRoot(start = process.cwd()) {\n\tlet directory = start\n\n\twhile (true) {\n\t\tif (ROOT_MARKERS.some((marker) => existsSync(resolve(directory, marker)))) {\n\t\t\treturn directory\n\t\t}\n\n\t\tconst parent = dirname(directory)\n\t\tif (parent === directory) return start\n\t\tdirectory = parent\n\t}\n}\n\nexport const test = baseTest.extend<DbFixture>({\n\tserver: [\n\t\tasync ({}, use) => {\n\t\t\tconst server = await ensureMswServer()\n\t\t\tserver.listen({ onUnhandledRequest: 'bypass' })\n\t\t\tawait use(server)\n\t\t\tserver.close()\n\t\t},\n\t\t{ auto: true, scope: 'worker' },\n\t],\n\t_cleanup: [\n\t\tasync ({ server }, use) => {\n\t\t\tawait use()\n\t\t\tserver.resetHandlers()\n\t\t},\n\t\t{ auto: true },\n\t],\n\tseedFunction: [async ({}, use) => use(seedFunction), { scope: 'file' }],\n\tdb: [\n\t\tasync ({ seedFunction }, use) => {\n\t\t\tconst { PostgreSqlContainer } = await import('@testcontainers/postgresql')\n\t\t\tconst { drizzle } = await import('drizzle-orm/node-postgres')\n\t\t\tconst { Wait } = await import('testcontainers')\n\t\t\tconst { Pool } = await import('pg')\n\t\t\tconst root = dbConfig.root ?? findProjectRoot()\n\t\t\tconst schemaPath = resolve(\n\t\t\t\troot,\n\t\t\t\tdbConfig.schemaPath ?? DEFAULT_SCHEMA_PATH,\n\t\t\t)\n\t\t\tconst container = await new PostgreSqlContainer(\n\t\t\t\tdbConfig.postgresImage ?? DEFAULT_IMAGE,\n\t\t\t)\n\t\t\t\t.withWaitStrategy(Wait.forHealthCheck())\n\t\t\t\t.start()\n\t\t\tconst client = new Pool({\n\t\t\t\tconnectionString: container.getConnectionUri(),\n\t\t\t})\n\t\t\tconst db = Object.assign(drizzle({ client }), { $client: client })\n\n\t\t\ttry {\n\t\t\t\tawait seedDatabase(db, { schemaPath, seedFunction })\n\t\t\t\tawait use(db)\n\t\t\t} finally {\n\t\t\t\tawait db.$client.end()\n\t\t\t\tawait container.stop()\n\t\t\t}\n\t\t},\n\t\t{ scope: 'file' },\n\t],\n})\n\nexport { afterEach, beforeEach, describe, expect, vi } from 'vite-plus/test'\n\nexport function initDb(\n\tseed: (db: Database) => Promise<void> | void,\n\tconfig: DbConfig = {},\n) {\n\tdbConfig = config\n\tseedFunction = seed\n}\n\nexport interface SeedDatabaseOptions {\n\tschemaPath: string\n\tseedFunction?: (db: Database) => Promise<void> | void\n\textensions?: string[]\n}\n\nexport async function seedDatabase(\n\tdb: Database,\n\t{\n\t\tschemaPath,\n\t\tseedFunction,\n\t\textensions = DEFAULT_EXTENSIONS,\n\t}: SeedDatabaseOptions,\n) {\n\tconst { pushSchema } = await import('drizzle-kit/api')\n\tconst { reset } = await import('drizzle-seed')\n\tconst schema = await import(/* @vite-ignore */ schemaPath)\n\n\tfor (const ext of extensions) {\n\t\tawait db.execute(`CREATE EXTENSION IF NOT EXISTS \"${ext}\"`)\n\t}\n\tawait (await pushSchema(schema, db)).apply()\n\tawait reset(db, schema)\n\tif (seedFunction) await seedFunction(db)\n}\n"],"mappings":";;;;;AAOA,MAAM,sBAAsB;AAC5B,MAAM,gBAAgB;AACtB,MAAM,qBAAqB,CAAC,UAAU;AACtC,MAAM,eAAe;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAmBD,IAAI,WAAqB,EAAE;AAC3B,IAAI;AACJ,IAAI,eAAuD,YAAY;AAEvE,eAAe,kBAAwC;CACtD,IAAI,CAAC,WAAW;EACf,MAAM,EAAE,SAAS,aAAa,MAAM,OAAO;EAC3C,YAAY,YAAY,GAAG,SAAS;;CAErC,OAAO;;AAGR,SAAS,gBAAgB,QAAQ,QAAQ,KAAK,EAAE;CAC/C,IAAI,YAAY;CAEhB,OAAO,MAAM;EACZ,IAAI,aAAa,MAAM,WAAW,WAAW,QAAQ,WAAW,OAAO,CAAC,CAAC,EACxE,OAAO;EAGR,MAAM,SAAS,QAAQ,UAAU;EACjC,IAAI,WAAW,WAAW,OAAO;EACjC,YAAY;;;AAId,MAAa,OAAOA,OAAS,OAAkB;CAC9C,QAAQ,CACP,OAAO,IAAI,QAAQ;EAClB,MAAM,SAAS,MAAM,iBAAiB;EACtC,OAAO,OAAO,EAAE,oBAAoB,UAAU,CAAC;EAC/C,MAAM,IAAI,OAAO;EACjB,OAAO,OAAO;IAEf;EAAE,MAAM;EAAM,OAAO;EAAU,CAC/B;CACD,UAAU,CACT,OAAO,EAAE,UAAU,QAAQ;EAC1B,MAAM,KAAK;EACX,OAAO,eAAe;IAEvB,EAAE,MAAM,MAAM,CACd;CACD,cAAc,CAAC,OAAO,IAAI,QAAQ,IAAI,aAAa,EAAE,EAAE,OAAO,QAAQ,CAAC;CACvE,IAAI,CACH,OAAO,EAAE,gBAAgB,QAAQ;EAChC,MAAM,EAAE,wBAAwB,MAAM,OAAO;EAC7C,MAAM,EAAE,YAAY,MAAM,OAAO;EACjC,MAAM,EAAE,SAAS,MAAM,OAAO;EAC9B,MAAM,EAAE,SAAS,MAAM,OAAO;EAE9B,MAAM,aAAa,QADN,SAAS,QAAQ,iBAAiB,EAG9C,SAAS,cAAc,oBACvB;EACD,MAAM,YAAY,MAAM,IAAI,oBAC3B,SAAS,iBAAiB,cAC1B,CACC,iBAAiB,KAAK,gBAAgB,CAAC,CACvC,OAAO;EACT,MAAM,SAAS,IAAI,KAAK,EACvB,kBAAkB,UAAU,kBAAkB,EAC9C,CAAC;EACF,MAAM,KAAK,OAAO,OAAO,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC;EAElE,IAAI;GACH,MAAM,aAAa,IAAI;IAAE;IAAY;IAAc,CAAC;GACpD,MAAM,IAAI,GAAG;YACJ;GACT,MAAM,GAAG,QAAQ,KAAK;GACtB,MAAM,UAAU,MAAM;;IAGxB,EAAE,OAAO,QAAQ,CACjB;CACD,CAAC;AAIF,SAAgB,OACf,MACA,SAAmB,EAAE,EACpB;CACD,WAAW;CACX,eAAe;;AAShB,eAAsB,aACrB,IACA,EACC,YACA,cACA,aAAa,sBAEb;CACD,MAAM,EAAE,eAAe,MAAM,OAAO;CACpC,MAAM,EAAE,UAAU,MAAM,OAAO;CAC/B,MAAM,SAAS,MAAM;;EAA0B;;CAE/C,KAAK,MAAM,OAAO,YACjB,MAAM,GAAG,QAAQ,mCAAmC,IAAI,GAAG;CAE5D,OAAO,MAAM,WAAW,QAAQ,GAAG,EAAE,OAAO;CAC5C,MAAM,MAAM,IAAI,OAAO;CACvB,IAAI,cAAc,MAAM,aAAa,GAAG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aamini/config",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"@vitejs/plugin-react": "^6.0.1",
|
|
52
52
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
53
53
|
"drizzle-orm": "^0.45.1",
|
|
54
|
+
"drizzle-kit": "^0.31.9",
|
|
54
55
|
"drizzle-seed": "^0.3.1",
|
|
55
56
|
"get-port": "^7.2.0",
|
|
56
57
|
"msw": "^2.13.4",
|
|
@@ -79,6 +80,7 @@
|
|
|
79
80
|
"@vitejs/plugin-react": "^6.0.1",
|
|
80
81
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
81
82
|
"drizzle-orm": "^0.45.1",
|
|
83
|
+
"drizzle-kit": "^0.31.9",
|
|
82
84
|
"drizzle-seed": "^0.3.1",
|
|
83
85
|
"msw": "^2.13.4",
|
|
84
86
|
"nitro": "latest",
|