pipework 0.1.5 → 0.2.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.
- package/README.md +21 -14
- package/dist/cli/commands/generate.d.ts +7 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +50 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.d.ts +8 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +33 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/test.d.ts +7 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +37 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +50 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/load.d.ts +7 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +6 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/namespace.d.ts +21 -15
- package/dist/config/namespace.d.ts.map +1 -1
- package/dist/config/schema.d.ts +13 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/context/create.d.ts +5 -1
- package/dist/context/create.d.ts.map +1 -1
- package/dist/context/create.js +3 -3
- package/dist/context/create.js.map +1 -1
- package/dist/context/guard.d.ts.map +1 -1
- package/dist/context/guard.js +6 -1
- package/dist/context/guard.js.map +1 -1
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/instrumentation.d.ts +5 -0
- package/dist/db/instrumentation.d.ts.map +1 -0
- package/dist/db/instrumentation.js +44 -0
- package/dist/db/instrumentation.js.map +1 -0
- package/dist/db/pool.d.ts +2 -1
- package/dist/db/pool.d.ts.map +1 -1
- package/dist/db/pool.js +4 -1
- package/dist/db/pool.js.map +1 -1
- package/dist/di/builder.d.ts +3 -0
- package/dist/di/builder.d.ts.map +1 -1
- package/dist/di/builder.js +4 -1
- package/dist/di/builder.js.map +1 -1
- package/dist/di/index.d.ts +1 -0
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +1 -0
- package/dist/di/index.js.map +1 -1
- package/dist/di/resolve.d.ts.map +1 -1
- package/dist/di/resolve.js +9 -5
- package/dist/di/resolve.js.map +1 -1
- package/dist/di/types.d.ts +1 -0
- package/dist/di/types.d.ts.map +1 -1
- package/dist/di/types.js +1 -1
- package/dist/di/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/migrate/generate.d.ts +9 -0
- package/dist/migrate/generate.d.ts.map +1 -0
- package/dist/migrate/generate.js +145 -0
- package/dist/migrate/generate.js.map +1 -0
- package/dist/migrate/index.d.ts +1 -0
- package/dist/migrate/index.d.ts.map +1 -1
- package/dist/migrate/index.js +1 -0
- package/dist/migrate/index.js.map +1 -1
- package/dist/pipework.js +3 -3
- package/dist/pipework.js.map +1 -1
- package/dist/test/auto-setup.js +6 -1
- package/dist/test/auto-setup.js.map +1 -1
- package/dist/test/context.d.ts.map +1 -1
- package/dist/test/context.js +10 -0
- package/dist/test/context.js.map +1 -1
- package/dist/test/index.d.ts +3 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -0
- package/dist/test/index.js.map +1 -1
- package/dist/test/plugin.d.ts +1 -1
- package/dist/test/plugin.d.ts.map +1 -1
- package/dist/test/plugin.js +2 -2
- package/dist/test/plugin.js.map +1 -1
- package/dist/test/vitest-config.d.ts +17 -0
- package/dist/test/vitest-config.d.ts.map +1 -0
- package/dist/test/vitest-config.js +28 -0
- package/dist/test/vitest-config.js.map +1 -0
- package/dist/test/vitest-plugin.d.ts +7 -0
- package/dist/test/vitest-plugin.d.ts.map +1 -0
- package/dist/test/vitest-plugin.js +13 -0
- package/dist/test/vitest-plugin.js.map +1 -0
- package/dist/test/vitest.d.ts +6 -0
- package/dist/test/vitest.d.ts.map +1 -1
- package/dist/test/vitest.js +31 -13
- package/dist/test/vitest.js.map +1 -1
- package/package.json +22 -2
package/README.md
CHANGED
|
@@ -31,7 +31,14 @@ Pipework eliminates the infrastructure decisions that every SaaS backend makes i
|
|
|
31
31
|
import { createManifold } from 'pipework'
|
|
32
32
|
|
|
33
33
|
export default createManifold({
|
|
34
|
-
databases: {
|
|
34
|
+
databases: {
|
|
35
|
+
app: {
|
|
36
|
+
url: 'DATABASE_URL',
|
|
37
|
+
testUrl: 'DATABASE_URL_TEST',
|
|
38
|
+
schema: './src/db/schema.ts',
|
|
39
|
+
migrations: './migrations/app',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
35
42
|
})
|
|
36
43
|
```
|
|
37
44
|
|
|
@@ -41,12 +48,12 @@ import pipework from '../pipework.config.js'
|
|
|
41
48
|
import { http, fitting, schema } from 'pipework'
|
|
42
49
|
|
|
43
50
|
const createNote = fitting
|
|
44
|
-
.use(
|
|
51
|
+
.use()
|
|
45
52
|
.auth<{ userId: string; tenantId: string }>()
|
|
46
53
|
.input(schema.check.object({ title: schema.check.string(), body: schema.check.string() }))
|
|
47
54
|
.route('POST', '/notes')
|
|
48
|
-
.fit(async ({
|
|
49
|
-
const [note] = await
|
|
55
|
+
.fit(async ({ db, auth, input }) => {
|
|
56
|
+
const [note] = await db
|
|
50
57
|
.insert(notes)
|
|
51
58
|
.values({ ...input, tenantId: auth.tenantId })
|
|
52
59
|
.returning()
|
|
@@ -97,11 +104,12 @@ const rows = await db.execute(pipe.sql`SELECT * FROM users`)
|
|
|
97
104
|
|
|
98
105
|
## Testing
|
|
99
106
|
|
|
100
|
-
|
|
107
|
+
One-liner vitest config. Put your connection string in `.env.test`:
|
|
101
108
|
|
|
102
109
|
```typescript
|
|
103
110
|
// vitest.config.ts
|
|
104
|
-
|
|
111
|
+
import { defineTestConfig } from 'pipework/vitest'
|
|
112
|
+
export default defineTestConfig()
|
|
105
113
|
```
|
|
106
114
|
|
|
107
115
|
```bash
|
|
@@ -109,27 +117,26 @@ test: { setupFiles: ['pipework/test/setup'] }
|
|
|
109
117
|
DATABASE_URL_TEST=postgresql://user:pass@localhost:5432/myapp_test
|
|
110
118
|
```
|
|
111
119
|
|
|
112
|
-
|
|
120
|
+
Add `"pipework/globals"` to your tsconfig types for the `db` global, then write tests directly:
|
|
113
121
|
|
|
114
122
|
```typescript
|
|
115
123
|
// tests/notes.test.ts
|
|
116
|
-
import { useTestDb, withFlow } from 'pipework/test'
|
|
117
124
|
import { pipe } from 'pipework'
|
|
118
125
|
|
|
119
126
|
it('creates a note', async () => {
|
|
120
|
-
|
|
121
|
-
await
|
|
122
|
-
|
|
123
|
-
const rows = await db.execute(pipe.sql`SELECT * FROM notes`)
|
|
124
|
-
expect(rows).toHaveLength(1)
|
|
125
|
-
})
|
|
127
|
+
await db.execute(pipe.sql`INSERT INTO notes (title) VALUES ('Test')`)
|
|
128
|
+
const rows = await db.execute(pipe.sql`SELECT * FROM notes`)
|
|
129
|
+
expect(rows).toHaveLength(1)
|
|
126
130
|
})
|
|
127
131
|
```
|
|
128
132
|
|
|
133
|
+
Every test runs in a rollback transaction. No cleanup, no state leaks. Run with `pipework test` for automatic database setup/teardown, or use `pnpm vitest` directly.
|
|
134
|
+
|
|
129
135
|
## Documentation
|
|
130
136
|
|
|
131
137
|
- **[Getting Started](https://github.com/theconstructory/pipework/blob/main/docs/getting-started.md)** — zero to running server
|
|
132
138
|
- **Guides**
|
|
139
|
+
- [Monorepo](https://github.com/theconstructory/pipework/blob/main/docs/guides/monorepo.md)
|
|
133
140
|
- [Configuration](https://github.com/theconstructory/pipework/blob/main/docs/guides/configuration.md)
|
|
134
141
|
- [Handlers](https://github.com/theconstructory/pipework/blob/main/docs/guides/handlers.md)
|
|
135
142
|
- [Auth & Tenants](https://github.com/theconstructory/pipework/blob/main/docs/guides/auth-and-tenants.md)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C7E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { info, success, warn, error as logError } from '../output.js';
|
|
2
|
+
export async function generate(options) {
|
|
3
|
+
const { discoverInstance } = await import('../../config/discover.js');
|
|
4
|
+
const { generateForDatabase } = await import('../../migrate/generate.js');
|
|
5
|
+
let instance;
|
|
6
|
+
try {
|
|
7
|
+
instance = await discoverInstance(options.cwd);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
logError('No pipework.config.ts found.\n\n' +
|
|
11
|
+
' Run `pipework init` to create one.\n');
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
if (options.db !== undefined) {
|
|
16
|
+
const dbConfig = instance.config.database(options.db);
|
|
17
|
+
info(`Generating migration for database: ${options.db}`);
|
|
18
|
+
const result = await generateForDatabase(dbConfig, options.cwd, options.name);
|
|
19
|
+
if (result.migrationFile === null) {
|
|
20
|
+
warn(`${options.db}: no schema changes detected`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
success(`${options.db}: generated ${result.migrationFile}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
info('Generating migrations for all databases...');
|
|
28
|
+
let generated = 0;
|
|
29
|
+
for (const [, dbConfig] of instance.config.databases()) {
|
|
30
|
+
if (dbConfig.schema === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
const result = await generateForDatabase(dbConfig, options.cwd, options.name);
|
|
33
|
+
if (result.migrationFile === null) {
|
|
34
|
+
warn(`${dbConfig.name}: no schema changes detected`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
success(`${dbConfig.name}: generated ${result.migrationFile}`);
|
|
38
|
+
generated++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (generated === 0) {
|
|
42
|
+
warn('No schema changes detected in any database.');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
await instance.pool.closeAll();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAA;AAQrE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAA+B;IAC5D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;IACrE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;IAEzE,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CACN,kCAAkC;YAClC,wCAAwC,CACzC,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACrD,IAAI,CAAC,sCAAsC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YACxD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC7E,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,8BAA8B,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE,eAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,4CAA4C,CAAC,CAAA;YAClD,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAQ;gBAC3C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC7E,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;oBAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,8BAA8B,CAAC,CAAA;gBACtD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,eAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;oBAC9D,SAAS,EAAE,CAAA;gBACb,CAAC;YACH,CAAC;YACD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,6CAA6C,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAkBA,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAiBtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,eAAe,GAAG
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,eAAe,GAAG;;;;;;;;;;;;CAYvB,CAAA;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;IAErD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,8CAA8C,CAAC,CAAA;IACtD,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;QACnD,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,WAAW,cAAc,EAAE,CAAC,CAAA;IACtC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,cAAc,4BAA4B,CAAC,CAAA;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;AAED,wBAAsB,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCnE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { bold, success } from '../output.js';
|
|
5
|
+
export async function run(options) {
|
|
6
|
+
const scriptPath = resolve(options.cwd, options.script);
|
|
7
|
+
if (!existsSync(scriptPath)) {
|
|
8
|
+
throw new Error(`Script not found: ${options.script}\n\n` +
|
|
9
|
+
` Provide a path relative to the project root.\n` +
|
|
10
|
+
` Example: ${bold('pipework run ./scripts/seed.ts')}\n`);
|
|
11
|
+
}
|
|
12
|
+
const { loadEnvFiles } = await import('../../config/env.js');
|
|
13
|
+
const { discoverInstance } = await import('../../config/discover.js');
|
|
14
|
+
const { createJobContext } = await import('../../context/create.js');
|
|
15
|
+
const { runInContext } = await import('../../context/store.js');
|
|
16
|
+
loadEnvFiles(options.cwd);
|
|
17
|
+
const instance = await discoverInstance(options.cwd);
|
|
18
|
+
const ctx = createJobContext({
|
|
19
|
+
instance,
|
|
20
|
+
jobType: options.jobType ?? 'script',
|
|
21
|
+
tenant: options.tenant ?? null,
|
|
22
|
+
});
|
|
23
|
+
try {
|
|
24
|
+
await runInContext(ctx, async () => {
|
|
25
|
+
await import(pathToFileURL(scriptPath).href);
|
|
26
|
+
});
|
|
27
|
+
success(`Script completed: ${options.script}`);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
await instance.pool.closeAll();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAS5C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAA0B;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,CAAC,MAAM,MAAM;YACzC,kDAAkD;YAClD,cAAc,IAAI,CAAC,gCAAgC,CAAC,IAAI,CACzD,CAAA;IACH,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAC5D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;IACrE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IACpE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAA;IAE/D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEpD,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAC3B,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,QAAQ;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;KAC/B,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC9D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { bold, info, success } from '../output.js';
|
|
3
|
+
export async function test(options) {
|
|
4
|
+
const { loadEnvFiles } = await import('../../config/env.js');
|
|
5
|
+
const { discoverInstance } = await import('../../config/discover.js');
|
|
6
|
+
const { setupTestDatabases, teardownTestDatabases } = await import('../../test/setup.js');
|
|
7
|
+
loadEnvFiles(options.cwd);
|
|
8
|
+
const instance = await discoverInstance(options.cwd);
|
|
9
|
+
info('Setting up test databases...');
|
|
10
|
+
await setupTestDatabases(instance);
|
|
11
|
+
try {
|
|
12
|
+
const args = ['vitest', 'run', ...options.vitestArgs];
|
|
13
|
+
info(`Running: ${bold(args.join(' '))}`);
|
|
14
|
+
const result = spawnSync('npx', args, {
|
|
15
|
+
cwd: options.cwd,
|
|
16
|
+
stdio: 'inherit',
|
|
17
|
+
env: { ...process.env },
|
|
18
|
+
});
|
|
19
|
+
if (result.error !== undefined) {
|
|
20
|
+
throw new Error(`Failed to spawn vitest: ${result.error.message}\n\n` +
|
|
21
|
+
` Ensure vitest is installed as a devDependency.\n` +
|
|
22
|
+
` Example: ${bold('pnpm add -D vitest')}\n`);
|
|
23
|
+
}
|
|
24
|
+
if (result.status !== 0) {
|
|
25
|
+
process.exitCode = result.status ?? 1;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
success('Tests completed.');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
info('Tearing down test databases...');
|
|
33
|
+
await teardownTestDatabases();
|
|
34
|
+
await instance.pool.closeAll();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQlD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAC5D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;IACrE,MAAM,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;IAEzF,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEpD,IAAI,CAAC,8BAA8B,CAAC,CAAA;IACpC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAElC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;QACrD,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;QAExC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM;gBACrD,oDAAoD;gBACpD,cAAc,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC7C,CAAA;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,gCAAgC,CAAC,CAAA;QACtC,MAAM,qBAAqB,EAAE,CAAA;QAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAChC,CAAC;AACH,CAAC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAuCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvD"}
|
package/dist/cli/index.js
CHANGED
|
@@ -6,22 +6,34 @@ ${bold('pipework')} — TypeScript framework for multi-tenant SaaS
|
|
|
6
6
|
|
|
7
7
|
${bold('Commands:')}
|
|
8
8
|
init Scaffold pipework.config.ts and migrations directory
|
|
9
|
+
generate Generate SQL migrations from Drizzle schema changes
|
|
9
10
|
migrate Run pending migrations for all databases
|
|
11
|
+
run <script> Execute a script with database context
|
|
12
|
+
test Run tests with automatic database setup
|
|
10
13
|
check Type-check, lint, and boundary enforcement
|
|
11
14
|
dev Start dev server with file watching
|
|
12
15
|
|
|
13
16
|
${bold('Options:')}
|
|
14
17
|
--help, -h Show this help message
|
|
15
18
|
--version, -v Show version
|
|
19
|
+
--name Migration name (used with generate)
|
|
16
20
|
--confirm Required for production migrations
|
|
17
21
|
--allow-destructive Permit destructive DDL (DROP TABLE, DROP COLUMN, etc.)
|
|
18
22
|
--acknowledge-lock Permit operations that acquire heavy locks
|
|
23
|
+
--tenant Tenant ID for tenant-scoped scripts
|
|
24
|
+
--job-type Override job type (default: "script")
|
|
19
25
|
|
|
20
26
|
${bold('Examples:')}
|
|
21
27
|
pipework init
|
|
28
|
+
pipework generate --name add-users
|
|
29
|
+
pipework generate --db app
|
|
22
30
|
pipework migrate --db app
|
|
23
31
|
pipework migrate --confirm # required in production
|
|
24
32
|
pipework dev --port 4000
|
|
33
|
+
pipework run ./scripts/seed.ts
|
|
34
|
+
pipework run ./scripts/backfill.ts --tenant t-123
|
|
35
|
+
pipework test
|
|
36
|
+
pipework test -- --reporter verbose
|
|
25
37
|
`;
|
|
26
38
|
export async function run(argv) {
|
|
27
39
|
const { values, positionals } = parseArgs({
|
|
@@ -31,11 +43,14 @@ export async function run(argv) {
|
|
|
31
43
|
help: { type: 'boolean', short: 'h' },
|
|
32
44
|
version: { type: 'boolean', short: 'v' },
|
|
33
45
|
db: { type: 'string' },
|
|
46
|
+
name: { type: 'string' },
|
|
34
47
|
port: { type: 'string' },
|
|
35
48
|
entry: { type: 'string' },
|
|
36
49
|
confirm: { type: 'boolean' },
|
|
37
50
|
'allow-destructive': { type: 'boolean' },
|
|
38
51
|
'acknowledge-lock': { type: 'boolean' },
|
|
52
|
+
tenant: { type: 'string' },
|
|
53
|
+
'job-type': { type: 'string' },
|
|
39
54
|
},
|
|
40
55
|
});
|
|
41
56
|
if (values.help === true || positionals.length === 0) {
|
|
@@ -60,6 +75,15 @@ export async function run(argv) {
|
|
|
60
75
|
await init(cwd);
|
|
61
76
|
break;
|
|
62
77
|
}
|
|
78
|
+
case 'generate': {
|
|
79
|
+
const { generate } = await import('./commands/generate.js');
|
|
80
|
+
await generate({
|
|
81
|
+
db: values.db,
|
|
82
|
+
name: values.name,
|
|
83
|
+
cwd,
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
63
87
|
case 'migrate': {
|
|
64
88
|
const { migrate } = await import('./commands/migrate.js');
|
|
65
89
|
await migrate({
|
|
@@ -71,6 +95,32 @@ export async function run(argv) {
|
|
|
71
95
|
});
|
|
72
96
|
break;
|
|
73
97
|
}
|
|
98
|
+
case 'run': {
|
|
99
|
+
const scriptPath = positionals[1];
|
|
100
|
+
if (scriptPath === undefined || scriptPath === '') {
|
|
101
|
+
error('Missing script path.');
|
|
102
|
+
process.stderr.write(`\n Usage: ${bold('pipework run <script> [-- args...]')}\n\n`);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const { run: runScript } = await import('./commands/run.js');
|
|
106
|
+
await runScript({
|
|
107
|
+
script: scriptPath,
|
|
108
|
+
cwd,
|
|
109
|
+
tenant: values.tenant,
|
|
110
|
+
jobType: values['job-type'],
|
|
111
|
+
});
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'test': {
|
|
115
|
+
const vitestArgs = positionals.slice(1);
|
|
116
|
+
const { test: runTests } = await import('./commands/test.js');
|
|
117
|
+
await runTests({
|
|
118
|
+
cwd,
|
|
119
|
+
db: values.db,
|
|
120
|
+
vitestArgs,
|
|
121
|
+
});
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
74
124
|
case 'check': {
|
|
75
125
|
const { check } = await import('./commands/check.js');
|
|
76
126
|
await check(cwd);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,KAAK,GAAG;EACZ,IAAI,CAAC,UAAU,CAAC;;EAEhB,IAAI,CAAC,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { trunkConfigSchema, type Blueprint, type DatabaseConfig, type TestConfig, type Environment, type IsolationStrategy } from './schema.js';
|
|
2
|
-
export { loadConfig, type ResolvedConfig, type ResolvedDatabase } from './load.js';
|
|
1
|
+
export { trunkConfigSchema, type Blueprint, type DatabaseConfig, type TestConfig, type Environment, type IsolationStrategy, type ObservabilityConfig } from './schema.js';
|
|
2
|
+
export { loadConfig, type ResolvedConfig, type ResolvedDatabase, type ResolvedObservability } from './load.js';
|
|
3
3
|
export { resolveEnvironment, ConfigError } from './resolve.js';
|
|
4
4
|
export { discoverInstance } from './discover.js';
|
|
5
5
|
export { loadEnvFiles } from './env.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACzK,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAC9G,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA4H,MAAM,aAAa,CAAA;AACzK,OAAO,EAAE,UAAU,EAA0E,MAAM,WAAW,CAAA;AAC9G,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/config/load.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { type Blueprint, type Environment, type IsolationStrategy } from './schema.js';
|
|
2
|
+
export interface ResolvedObservability {
|
|
3
|
+
readonly slowQueryMs: number;
|
|
4
|
+
readonly logAllQueries: boolean;
|
|
5
|
+
readonly poolMetricsInterval: number;
|
|
6
|
+
}
|
|
2
7
|
export interface ResolvedConfig {
|
|
3
8
|
readonly raw: Blueprint;
|
|
4
9
|
readonly environment: Environment;
|
|
10
|
+
readonly observability: ResolvedObservability;
|
|
5
11
|
database(name?: string): ResolvedDatabase;
|
|
6
12
|
databases(): ReadonlyMap<string, ResolvedDatabase>;
|
|
7
13
|
databaseNames(): readonly string[];
|
|
@@ -11,6 +17,7 @@ export interface ResolvedConfig {
|
|
|
11
17
|
export interface ResolvedDatabase {
|
|
12
18
|
readonly name: string;
|
|
13
19
|
readonly url: string;
|
|
20
|
+
readonly schema: string | string[] | undefined;
|
|
14
21
|
readonly migrations: string | undefined;
|
|
15
22
|
readonly extensions: readonly string[];
|
|
16
23
|
readonly migrationTable: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAuB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG9H,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAA;IACzC,SAAS,IAAI,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAClD,aAAa,IAAI,SAAS,MAAM,EAAE,CAAA;IAClC,mBAAmB,IAAI,MAAM,CAAA;IAC7B,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAA;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAavD"}
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAuB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG9H,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAA;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAA;IACzC,SAAS,IAAI,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAClD,aAAa,IAAI,SAAS,MAAM,EAAE,CAAA;IAClC,mBAAmB,IAAI,MAAM,CAAA;IAC7B,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAA;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAavD"}
|
package/dist/config/load.js
CHANGED
|
@@ -20,6 +20,11 @@ function buildResolved(config, environment) {
|
|
|
20
20
|
return {
|
|
21
21
|
raw: config,
|
|
22
22
|
environment,
|
|
23
|
+
observability: {
|
|
24
|
+
slowQueryMs: config.observability?.slowQueryMs ?? 500,
|
|
25
|
+
logAllQueries: config.observability?.logAllQueries ?? false,
|
|
26
|
+
poolMetricsInterval: config.observability?.poolMetricsInterval ?? 0,
|
|
27
|
+
},
|
|
23
28
|
database(name) {
|
|
24
29
|
if (name === undefined) {
|
|
25
30
|
if (declaredNames.length === 1) {
|
|
@@ -61,6 +66,7 @@ function resolveDatabase(name, config, url) {
|
|
|
61
66
|
return {
|
|
62
67
|
name,
|
|
63
68
|
url,
|
|
69
|
+
schema: config.schema,
|
|
64
70
|
migrations: config.migrations,
|
|
65
71
|
extensions: config.extensions ?? [],
|
|
66
72
|
migrationTable: config.migrationTable ?? `__pipework_migrations_${name}`,
|
package/dist/config/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiF,MAAM,aAAa,CAAA;AAC9H,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,37 +3,43 @@ import { discoverInstance } from './discover.js';
|
|
|
3
3
|
export declare const config: {
|
|
4
4
|
load: typeof loadConfig;
|
|
5
5
|
discover: typeof discoverInstance;
|
|
6
|
-
configSchema: import("zod
|
|
7
|
-
databases: import("zod
|
|
8
|
-
url: import("zod
|
|
9
|
-
testUrl: import("zod
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
configSchema: import("zod").ZodObject<{
|
|
7
|
+
databases: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
|
|
8
|
+
url: import("zod").ZodString;
|
|
9
|
+
testUrl: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
|
+
schema: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>]>>;
|
|
11
|
+
migrations: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12
|
+
extensions: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13
|
+
migrationTable: import("zod").ZodOptional<import("zod").ZodString>;
|
|
14
|
+
pool: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
15
|
+
max: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
16
|
+
idleTimeout: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
16
17
|
}, import("zod/v4/core").$strip>>;
|
|
17
18
|
}, import("zod/v4/core").$strip>>;
|
|
18
|
-
environment: import("zod
|
|
19
|
+
environment: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
19
20
|
development: "development";
|
|
20
21
|
test: "test";
|
|
21
22
|
production: "production";
|
|
22
23
|
}>>;
|
|
23
|
-
test: import("zod
|
|
24
|
-
isolation: import("zod
|
|
24
|
+
test: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
25
|
+
isolation: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
25
26
|
transaction: "transaction";
|
|
26
27
|
database: "database";
|
|
27
28
|
container: "container";
|
|
28
29
|
}>>;
|
|
29
|
-
databases: import("zod
|
|
30
|
-
isolation: import("zod
|
|
30
|
+
databases: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
|
|
31
|
+
isolation: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
31
32
|
transaction: "transaction";
|
|
32
33
|
database: "database";
|
|
33
34
|
container: "container";
|
|
34
35
|
}>>;
|
|
35
36
|
}, import("zod/v4/core").$strip>>>;
|
|
36
37
|
}, import("zod/v4/core").$strip>>;
|
|
38
|
+
observability: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
39
|
+
slowQueryMs: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
40
|
+
logAllQueries: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
41
|
+
poolMetricsInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
42
|
+
}, import("zod/v4/core").$strip>>;
|
|
37
43
|
}, import("zod/v4/core").$strip>;
|
|
38
44
|
ConfigError: typeof ConfigError;
|
|
39
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/config/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/config/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAA"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
declare const databaseSchema: z.ZodObject<{
|
|
3
3
|
url: z.ZodString;
|
|
4
4
|
testUrl: z.ZodOptional<z.ZodString>;
|
|
5
|
+
schema: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
5
6
|
migrations: z.ZodOptional<z.ZodString>;
|
|
6
7
|
extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
7
8
|
migrationTable: z.ZodOptional<z.ZodString>;
|
|
@@ -34,10 +35,16 @@ declare const environmentSchema: z.ZodEnum<{
|
|
|
34
35
|
test: "test";
|
|
35
36
|
production: "production";
|
|
36
37
|
}>;
|
|
38
|
+
declare const observabilitySchema: z.ZodObject<{
|
|
39
|
+
slowQueryMs: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
logAllQueries: z.ZodOptional<z.ZodBoolean>;
|
|
41
|
+
poolMetricsInterval: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
}, z.core.$strip>;
|
|
37
43
|
export declare const trunkConfigSchema: z.ZodObject<{
|
|
38
44
|
databases: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
39
45
|
url: z.ZodString;
|
|
40
46
|
testUrl: z.ZodOptional<z.ZodString>;
|
|
47
|
+
schema: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
41
48
|
migrations: z.ZodOptional<z.ZodString>;
|
|
42
49
|
extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
43
50
|
migrationTable: z.ZodOptional<z.ZodString>;
|
|
@@ -65,11 +72,17 @@ export declare const trunkConfigSchema: z.ZodObject<{
|
|
|
65
72
|
}>>;
|
|
66
73
|
}, z.core.$strip>>>;
|
|
67
74
|
}, z.core.$strip>>;
|
|
75
|
+
observability: z.ZodOptional<z.ZodObject<{
|
|
76
|
+
slowQueryMs: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
logAllQueries: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
poolMetricsInterval: z.ZodOptional<z.ZodNumber>;
|
|
79
|
+
}, z.core.$strip>>;
|
|
68
80
|
}, z.core.$strip>;
|
|
69
81
|
export type Blueprint = z.infer<typeof trunkConfigSchema>;
|
|
70
82
|
export type DatabaseConfig = z.infer<typeof databaseSchema>;
|
|
71
83
|
export type TestConfig = z.infer<typeof testSchema>;
|
|
72
84
|
export type Environment = z.infer<typeof environmentSchema>;
|
|
73
85
|
export type IsolationStrategy = z.infer<typeof testIsolationStrategy>;
|
|
86
|
+
export type ObservabilityConfig = z.infer<typeof observabilitySchema>;
|
|
74
87
|
export {};
|
|
75
88
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,QAAA,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B,QAAA,MAAM,cAAc;;;;;;;;;;;iBAWlB,CAAA;AAEF,QAAA,MAAM,qBAAqB;;;;EAAmD,CAAA;AAE9E,QAAA,MAAM,UAAU;;;;;;;;;;;;;iBAKd,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;EAAgD,CAAA;AAEvE,QAAA,MAAM,mBAAmB;;;;iBAIvB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK5B,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACrE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA"}
|