@cedarjs/pg 0.1.0-alpha.1 → 0.2.0-beta.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 +361 -89
- package/dist/cli.cjs +131 -35
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +118 -22
- package/dist/cli.mjs.map +1 -1
- package/dist/dev-env.cjs +12 -0
- package/dist/dev-env.cjs.map +1 -0
- package/dist/dev-env.d.cts +1 -0
- package/dist/dev-env.d.mts +1 -0
- package/dist/dev-env.mjs +14 -0
- package/dist/dev-env.mjs.map +1 -0
- package/dist/index.cjs +51 -10
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +198 -84
- package/dist/index.d.mts +198 -84
- package/dist/index.mjs +32 -2
- package/dist/index.mjs.map +1 -0
- package/dist/jest-teardown.cjs +18 -0
- package/dist/jest-teardown.cjs.map +1 -0
- package/dist/jest-teardown.d.cts +13 -0
- package/dist/jest-teardown.d.mts +14 -0
- package/dist/jest-teardown.mjs +18 -0
- package/dist/jest-teardown.mjs.map +1 -0
- package/dist/jest-template.cjs +44 -0
- package/dist/jest-template.cjs.map +1 -0
- package/dist/jest-template.d.cts +31 -0
- package/dist/jest-template.d.mts +31 -0
- package/dist/jest-template.mjs +38 -0
- package/dist/jest-template.mjs.map +1 -0
- package/dist/jest.cjs +12 -15
- package/dist/jest.cjs.map +1 -1
- package/dist/jest.d.cts +10 -7
- package/dist/jest.d.mts +10 -6
- package/dist/jest.mjs +12 -10
- package/dist/jest.mjs.map +1 -1
- package/dist/lease-B3TuX92y.d.mts +24 -0
- package/dist/lease-DS1SX8U_.mjs +221 -0
- package/dist/lease-DS1SX8U_.mjs.map +1 -0
- package/dist/lease-WlmOnNDi.cjs +310 -0
- package/dist/lease-WlmOnNDi.cjs.map +1 -0
- package/dist/lease-t4I9JahV.d.cts +24 -0
- package/dist/lifecycle-BbrvFQvg.cjs +953 -0
- package/dist/lifecycle-BbrvFQvg.cjs.map +1 -0
- package/dist/lifecycle-BvIx0xqq.mjs +781 -0
- package/dist/lifecycle-BvIx0xqq.mjs.map +1 -0
- package/dist/load-dev-env-BULkXyen.mjs +10 -0
- package/dist/load-dev-env-BULkXyen.mjs.map +1 -0
- package/dist/load-dev-env-Bl6Ddv1U.cjs +15 -0
- package/dist/load-dev-env-Bl6Ddv1U.cjs.map +1 -0
- package/dist/load-mode-env-CX9vd56X.cjs +39 -0
- package/dist/load-mode-env-CX9vd56X.cjs.map +1 -0
- package/dist/load-mode-env-Ce9ujisN.mjs +28 -0
- package/dist/load-mode-env-Ce9ujisN.mjs.map +1 -0
- package/dist/load-test-env-BqtA6V-d.mjs +18 -0
- package/dist/load-test-env-BqtA6V-d.mjs.map +1 -0
- package/dist/load-test-env-Dcgh6YHV.cjs +23 -0
- package/dist/load-test-env-Dcgh6YHV.cjs.map +1 -0
- package/dist/naming-C2nGVxPk.d.cts +39 -0
- package/dist/naming-C2nGVxPk.d.mts +39 -0
- package/dist/nx.cjs +25 -18
- package/dist/nx.cjs.map +1 -1
- package/dist/nx.d.cts +9 -20
- package/dist/nx.d.mts +9 -20
- package/dist/nx.mjs +18 -18
- package/dist/nx.mjs.map +1 -1
- package/dist/status-4Uz6A3LB.cjs +31 -0
- package/dist/status-4Uz6A3LB.cjs.map +1 -0
- package/dist/status-Dcnpgnlz.mjs +26 -0
- package/dist/status-Dcnpgnlz.mjs.map +1 -0
- package/dist/studio-DIFw1qWC.mjs +173 -0
- package/dist/studio-DIFw1qWC.mjs.map +1 -0
- package/dist/studio-oJE30_PO.cjs +208 -0
- package/dist/studio-oJE30_PO.cjs.map +1 -0
- package/dist/tasks-CNHvvlsN.cjs +67 -0
- package/dist/tasks-CNHvvlsN.cjs.map +1 -0
- package/dist/tasks-CjaZRi_G.d.mts +19 -0
- package/dist/tasks-D5iWIdlo.mjs +38 -0
- package/dist/tasks-D5iWIdlo.mjs.map +1 -0
- package/dist/tasks-DdQoP9We.d.cts +19 -0
- package/dist/template-BiJ-0TIF.mjs +88 -0
- package/dist/template-BiJ-0TIF.mjs.map +1 -0
- package/dist/template-CXMpODzK.cjs +105 -0
- package/dist/template-CXMpODzK.cjs.map +1 -0
- package/dist/template-mode-BTUsdBtA.mjs +94 -0
- package/dist/template-mode-BTUsdBtA.mjs.map +1 -0
- package/dist/template-mode-CzyVwHsi.d.cts +31 -0
- package/dist/template-mode-CzyVwHsi.d.mts +31 -0
- package/dist/template-mode-JTOxrEgE.cjs +105 -0
- package/dist/template-mode-JTOxrEgE.cjs.map +1 -0
- package/dist/test-env.cjs +16 -0
- package/dist/test-env.cjs.map +1 -0
- package/dist/test-env.d.cts +1 -0
- package/dist/test-env.d.mts +1 -0
- package/dist/test-env.mjs +18 -0
- package/dist/test-env.mjs.map +1 -0
- package/dist/vite-plus.cjs +113 -35
- package/dist/vite-plus.cjs.map +1 -1
- package/dist/vite-plus.d.cts +26 -46
- package/dist/vite-plus.d.mts +26 -46
- package/dist/vite-plus.mjs +110 -32
- package/dist/vite-plus.mjs.map +1 -1
- package/dist/vitest-template.cjs +48 -0
- package/dist/vitest-template.cjs.map +1 -0
- package/dist/vitest-template.d.cts +31 -0
- package/dist/vitest-template.d.mts +31 -0
- package/dist/vitest-template.mjs +42 -0
- package/dist/vitest-template.mjs.map +1 -0
- package/dist/vitest.cjs +10 -10
- package/dist/vitest.cjs.map +1 -1
- package/dist/vitest.d.cts +7 -3
- package/dist/vitest.d.mts +7 -2
- package/dist/vitest.mjs +10 -5
- package/dist/vitest.mjs.map +1 -1
- package/package.json +46 -13
- package/scripts/autopg-version +1 -0
- package/scripts/ci-install-autopg.sh +73 -0
- package/scripts/postinstall.js +35 -9
- package/dist/constants-BY97wXjA.mjs +0 -24
- package/dist/constants-BY97wXjA.mjs.map +0 -1
- package/dist/constants-CNZn5Xro.cjs +0 -41
- package/dist/constants-CNZn5Xro.cjs.map +0 -1
- package/dist/lifecycle-BGYtVXtx.cjs +0 -743
- package/dist/lifecycle-BGYtVXtx.cjs.map +0 -1
- package/dist/lifecycle-CT_8AWPv.mjs +0 -577
- package/dist/lifecycle-CT_8AWPv.mjs.map +0 -1
- package/dist/tasks-13P6tMth.mjs +0 -16
- package/dist/tasks-13P6tMth.mjs.map +0 -1
- package/dist/tasks-B8ryV9xo.cjs +0 -21
- package/dist/tasks-B8ryV9xo.cjs.map +0 -1
package/dist/vite-plus.cjs
CHANGED
|
@@ -1,30 +1,131 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./
|
|
3
|
-
const
|
|
2
|
+
const require_lease = require("./lease-WlmOnNDi.cjs");
|
|
3
|
+
const require_status = require("./status-4Uz6A3LB.cjs");
|
|
4
|
+
const require_studio = require("./studio-oJE30_PO.cjs");
|
|
5
|
+
const require_tasks = require("./tasks-CNHvvlsN.cjs");
|
|
6
|
+
//#region src/adapters/vite-dev-plugin.ts
|
|
7
|
+
const requireVite = (0, require("node:module").createRequire)(require("url").pathToFileURL(__filename).href);
|
|
8
|
+
function installedViteVersion() {
|
|
9
|
+
try {
|
|
10
|
+
return requireVite("vite/package.json").version;
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function viteBindsPluginShortcuts(version) {
|
|
16
|
+
const resolved = version ?? installedViteVersion();
|
|
17
|
+
if (resolved === void 0) return false;
|
|
18
|
+
return Number.parseInt(resolved, 10) >= 8;
|
|
19
|
+
}
|
|
20
|
+
function shouldShowPanel() {
|
|
21
|
+
return Boolean(process.stdin.isTTY) && !process.env.CI;
|
|
22
|
+
}
|
|
23
|
+
function logStatus(server, options) {
|
|
24
|
+
const status = require_status.resolveDevStatus({
|
|
25
|
+
root: options.root,
|
|
26
|
+
mode: options.mode
|
|
27
|
+
});
|
|
28
|
+
for (const line of require_studio.formatDevStatus(status)) if (status.ok) server.config.logger.info(line);
|
|
29
|
+
else server.config.logger.warn(line);
|
|
30
|
+
return status;
|
|
31
|
+
}
|
|
32
|
+
function createStudioLauncher(options) {
|
|
33
|
+
let studioChild;
|
|
34
|
+
const prefer = options.studio === false ? void 0 : options.studio;
|
|
35
|
+
return (s) => {
|
|
36
|
+
const status = logStatus(s, options);
|
|
37
|
+
if (!status.ok) return;
|
|
38
|
+
const studio = require_studio.detectStudio({
|
|
39
|
+
root: status.root,
|
|
40
|
+
cwd: options.cwd ?? s.config.root,
|
|
41
|
+
prefer
|
|
42
|
+
});
|
|
43
|
+
if (!studio) {
|
|
44
|
+
s.config.logger.warn(`${require_lease.CLI_NAME}: no Prisma or Drizzle Studio found (install prisma or drizzle-kit)`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (require_studio.studioChildRunning(studioChild)) {
|
|
48
|
+
s.config.logger.info(`${require_lease.CLI_NAME}: studio already running`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const child = require_studio.openStudio({
|
|
52
|
+
databaseUrl: status.databaseUrl,
|
|
53
|
+
studio
|
|
54
|
+
});
|
|
55
|
+
child.once("error", (err) => {
|
|
56
|
+
studioChild = void 0;
|
|
57
|
+
s.config.logger.error(`${require_lease.CLI_NAME}: studio failed: ${err.message}`);
|
|
58
|
+
});
|
|
59
|
+
child.once("exit", (code, signal) => {
|
|
60
|
+
studioChild = void 0;
|
|
61
|
+
if (code && code !== 0) s.config.logger.warn(`${require_lease.CLI_NAME}: studio exited ${code}`);
|
|
62
|
+
else if (signal) s.config.logger.warn(`${require_lease.CLI_NAME}: studio killed (${signal})`);
|
|
63
|
+
});
|
|
64
|
+
studioChild = child;
|
|
65
|
+
s.config.logger.info(`${require_lease.CLI_NAME}: opening ${studio.kind} studio (${studio.command} ${studio.args.join(" ")})`);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Vite / Vite+ plugin: print a cedar-pg status panel on listen and register
|
|
70
|
+
* CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —
|
|
71
|
+
* pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.
|
|
72
|
+
*
|
|
73
|
+
* @param viteVersion Test-only override for the shortcut gate. Omit in production.
|
|
74
|
+
*/
|
|
75
|
+
function cedarPgDev(options = {}, viteVersion) {
|
|
76
|
+
return {
|
|
77
|
+
name: "cedar-pg-dev",
|
|
78
|
+
configureServer(server) {
|
|
79
|
+
if (shouldShowPanel() && server.httpServer) server.httpServer.once("listening", () => {
|
|
80
|
+
logStatus(server, options);
|
|
81
|
+
});
|
|
82
|
+
if (!viteBindsPluginShortcuts(viteVersion)) return;
|
|
83
|
+
const dShortcut = {
|
|
84
|
+
key: "d",
|
|
85
|
+
description: "show cedar-pg database status",
|
|
86
|
+
action(s) {
|
|
87
|
+
logStatus(s, options);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const shortcuts = options.studio === false ? [dShortcut] : [dShortcut, {
|
|
91
|
+
key: "s",
|
|
92
|
+
description: "open Prisma/Drizzle studio (cedar-pg DATABASE_URL)",
|
|
93
|
+
action: createStudioLauncher(options)
|
|
94
|
+
}];
|
|
95
|
+
server.bindCLIShortcuts({
|
|
96
|
+
print: false,
|
|
97
|
+
customShortcuts: shortcuts
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
4
103
|
//#region src/adapters/vite-plus.ts
|
|
5
104
|
/**
|
|
6
105
|
* Consumer adapter for external Vite+ projects.
|
|
7
106
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
107
|
+
* - `cedarPgTasks()` — merge into `run.tasks` so `vp run test` / `vp run dev`
|
|
108
|
+
* depend on cedarpg acquire.
|
|
109
|
+
* - `cedarPgDev()` — Vite plugin: status panel + `d` / `s` shortcuts on Vite 8 (no acquire).
|
|
10
110
|
*
|
|
11
111
|
* @example
|
|
12
112
|
* ```ts
|
|
13
113
|
* import { defineConfig } from 'vite-plus'
|
|
14
|
-
* import { cedarPgTasks } from '@cedarjs/pg/vite-plus'
|
|
114
|
+
* import { cedarPgTasks, cedarPgDev } from '@cedarjs/pg/vite-plus'
|
|
15
115
|
*
|
|
16
116
|
* export default defineConfig({
|
|
117
|
+
* plugins: [cedarPgDev()],
|
|
17
118
|
* run: {
|
|
18
119
|
* tasks: {
|
|
19
120
|
* ...cedarPgTasks(),
|
|
20
121
|
* test: {
|
|
21
122
|
* command: 'vp test',
|
|
22
|
-
* dependsOn: ['db:
|
|
123
|
+
* dependsOn: ['db:acquire-test'],
|
|
23
124
|
* env: ['DATABASE_URL', 'TEST_DATABASE_URL'],
|
|
24
125
|
* },
|
|
25
126
|
* dev: {
|
|
26
127
|
* command: 'vp dev',
|
|
27
|
-
* dependsOn: ['db:
|
|
128
|
+
* dependsOn: ['db:acquire'],
|
|
28
129
|
* env: ['DATABASE_URL'],
|
|
29
130
|
* },
|
|
30
131
|
* },
|
|
@@ -32,34 +133,11 @@ const require_tasks = require("./tasks-B8ryV9xo.cjs");
|
|
|
32
133
|
* })
|
|
33
134
|
* ```
|
|
34
135
|
*/
|
|
35
|
-
const CEDAR_PG_TASK_ENSURE_DEV = "db:ensure";
|
|
36
|
-
const CEDAR_PG_TASK_ENSURE_TEST = "db:ensure-test";
|
|
37
|
-
const CEDAR_PG_TASK_DISPOSE_TEST = "db:dispose-test";
|
|
38
|
-
/**
|
|
39
|
-
* Returns Vite+ `run.tasks` entries for cedar-pg lifecycle.
|
|
40
|
-
*/
|
|
41
|
-
function cedarPgTasks(options = {}) {
|
|
42
|
-
const cmds = require_tasks.cedarPgCommands(options.bin ?? "cedarpg");
|
|
43
|
-
const tasks = {
|
|
44
|
-
[CEDAR_PG_TASK_ENSURE_DEV]: {
|
|
45
|
-
command: cmds.ensureDev,
|
|
46
|
-
cache: false
|
|
47
|
-
},
|
|
48
|
-
[CEDAR_PG_TASK_ENSURE_TEST]: {
|
|
49
|
-
command: cmds.ensureTest,
|
|
50
|
-
cache: false
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
if (options.includeDisposeTest !== false) tasks[CEDAR_PG_TASK_DISPOSE_TEST] = {
|
|
54
|
-
command: cmds.disposeTest,
|
|
55
|
-
cache: false
|
|
56
|
-
};
|
|
57
|
-
return tasks;
|
|
58
|
-
}
|
|
59
136
|
//#endregion
|
|
60
|
-
exports.
|
|
61
|
-
exports.
|
|
62
|
-
exports.
|
|
63
|
-
exports.
|
|
137
|
+
exports.CEDAR_PG_TASK_ACQUIRE_DEV = require_tasks.CEDAR_PG_TASK_ACQUIRE_DEV;
|
|
138
|
+
exports.CEDAR_PG_TASK_ACQUIRE_TEST = require_tasks.CEDAR_PG_TASK_ACQUIRE_TEST;
|
|
139
|
+
exports.CEDAR_PG_TASK_DISPOSE_TEST = require_tasks.CEDAR_PG_TASK_DISPOSE_TEST;
|
|
140
|
+
exports.cedarPgDev = cedarPgDev;
|
|
141
|
+
exports.cedarPgTasks = require_tasks.cedarPgLifecycleTargets;
|
|
64
142
|
|
|
65
143
|
//# sourceMappingURL=vite-plus.cjs.map
|
package/dist/vite-plus.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plus.cjs","names":["
|
|
1
|
+
{"version":3,"file":"vite-plus.cjs","names":["resolveDevStatus","formatDevStatus","detectStudio","CLI_NAME","studioChildRunning","openStudio"],"sources":["../src/adapters/vite-dev-plugin.ts","../src/adapters/vite-plus.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport type { ChildProcess } from \"node:child_process\";\nimport type { Plugin, ViteDevServer } from \"vite\";\nimport { CLI_NAME } from \"../core/constants.ts\";\nimport { resolveDevStatus, type DevStatus } from \"../core/status.ts\";\nimport type { DbMode } from \"../core/naming.ts\";\nimport { formatDevStatus } from \"./status-format.ts\";\nimport { detectStudio, openStudio, studioChildRunning, type StudioKind } from \"./studio.ts\";\n\nconst requireVite = createRequire(import.meta.url);\n\nfunction installedViteVersion(): string | undefined {\n try {\n return (requireVite(\"vite/package.json\") as { version: string }).version;\n } catch {\n return undefined;\n }\n}\n\nexport function viteBindsPluginShortcuts(version?: string): boolean {\n const resolved = version ?? installedViteVersion();\n if (resolved === undefined) return false;\n return Number.parseInt(resolved, 10) >= 8;\n}\n\nexport type CedarPgDevOptions = {\n mode?: DbMode;\n /** Worktree / lease root. Omit to resolve from cwd (git toplevel). */\n root?: string;\n /** App package to search for Prisma/Drizzle. Defaults to Vite `config.root`. */\n cwd?: string;\n /** Force Prisma/Drizzle Studio; `false` disables the `s` shortcut. Omit to auto-detect. */\n studio?: StudioKind | false;\n};\n\nfunction shouldShowPanel(): boolean {\n return Boolean(process.stdin.isTTY) && !process.env.CI;\n}\n\nfunction logStatus(server: ViteDevServer, options: CedarPgDevOptions): DevStatus {\n const status = resolveDevStatus({ root: options.root, mode: options.mode });\n for (const line of formatDevStatus(status)) {\n if (status.ok) server.config.logger.info(line);\n else server.config.logger.warn(line);\n }\n return status;\n}\n\nfunction createStudioLauncher(options: CedarPgDevOptions): (s: ViteDevServer) => void {\n let studioChild: ChildProcess | undefined;\n const prefer = options.studio === false ? undefined : options.studio;\n return (s) => {\n const status = logStatus(s, options);\n if (!status.ok) return;\n\n const studio = detectStudio({\n root: status.root,\n cwd: options.cwd ?? s.config.root,\n prefer,\n });\n if (!studio) {\n s.config.logger.warn(\n `${CLI_NAME}: no Prisma or Drizzle Studio found (install prisma or drizzle-kit)`,\n );\n return;\n }\n\n if (studioChildRunning(studioChild)) {\n s.config.logger.info(`${CLI_NAME}: studio already running`);\n return;\n }\n\n const child = openStudio({ databaseUrl: status.databaseUrl, studio });\n child.once(\"error\", (err) => {\n studioChild = undefined;\n s.config.logger.error(`${CLI_NAME}: studio failed: ${err.message}`);\n });\n child.once(\"exit\", (code, signal) => {\n studioChild = undefined;\n if (code && code !== 0) {\n s.config.logger.warn(`${CLI_NAME}: studio exited ${code}`);\n } else if (signal) {\n s.config.logger.warn(`${CLI_NAME}: studio killed (${signal})`);\n }\n });\n studioChild = child;\n s.config.logger.info(\n `${CLI_NAME}: opening ${studio.kind} studio (${studio.command} ${studio.args.join(\" \")})`,\n );\n };\n}\n\n/**\n * Vite / Vite+ plugin: print a cedar-pg status panel on listen and register\n * CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —\n * pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.\n *\n * @param viteVersion Test-only override for the shortcut gate. Omit in production.\n */\nexport function cedarPgDev(options: CedarPgDevOptions = {}, viteVersion?: string): Plugin {\n return {\n name: \"cedar-pg-dev\",\n configureServer(server) {\n if (shouldShowPanel() && server.httpServer) {\n server.httpServer.once(\"listening\", () => {\n logStatus(server, options);\n });\n }\n\n if (!viteBindsPluginShortcuts(viteVersion)) {\n return;\n }\n\n const dShortcut = {\n key: \"d\",\n description: \"show cedar-pg database status\",\n action(s: ViteDevServer) {\n logStatus(s, options);\n },\n };\n const shortcuts =\n options.studio === false\n ? [dShortcut]\n : [\n dShortcut,\n {\n key: \"s\",\n description: \"open Prisma/Drizzle studio (cedar-pg DATABASE_URL)\",\n action: createStudioLauncher(options),\n },\n ];\n\n server.bindCLIShortcuts({\n print: false,\n customShortcuts: shortcuts,\n });\n },\n };\n}\n","/**\n * Consumer adapter for external Vite+ projects.\n *\n * - `cedarPgTasks()` — merge into `run.tasks` so `vp run test` / `vp run dev`\n * depend on cedarpg acquire.\n * - `cedarPgDev()` — Vite plugin: status panel + `d` / `s` shortcuts on Vite 8 (no acquire).\n *\n * @example\n * ```ts\n * import { defineConfig } from 'vite-plus'\n * import { cedarPgTasks, cedarPgDev } from '@cedarjs/pg/vite-plus'\n *\n * export default defineConfig({\n * plugins: [cedarPgDev()],\n * run: {\n * tasks: {\n * ...cedarPgTasks(),\n * test: {\n * command: 'vp test',\n * dependsOn: ['db:acquire-test'],\n * env: ['DATABASE_URL', 'TEST_DATABASE_URL'],\n * },\n * dev: {\n * command: 'vp dev',\n * dependsOn: ['db:acquire'],\n * env: ['DATABASE_URL'],\n * },\n * },\n * },\n * })\n * ```\n */\n\nimport {\n cedarPgLifecycleTargets,\n type CedarPgLifecycleTarget,\n type CedarPgLifecycleTargetsOptions,\n CEDAR_PG_TASK_DISPOSE_TEST,\n CEDAR_PG_TASK_ACQUIRE_DEV,\n CEDAR_PG_TASK_ACQUIRE_TEST,\n} from \"./tasks.ts\";\n\nexport {\n CEDAR_PG_TASK_ACQUIRE_DEV,\n CEDAR_PG_TASK_ACQUIRE_TEST,\n CEDAR_PG_TASK_DISPOSE_TEST,\n cedarPgLifecycleTargets as cedarPgTasks,\n};\n\nexport type CedarPgTaskDef = CedarPgLifecycleTarget;\nexport type CedarPgTasksOptions = CedarPgLifecycleTargetsOptions;\n\nexport { cedarPgDev } from \"./vite-dev-plugin.ts\";\nexport type { CedarPgDevOptions } from \"./vite-dev-plugin.ts\";\n"],"mappings":";;;;;;AASA,MAAM,eAAA,wBAAA,CAAA,CAAA,cAAA,CAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,IAA2C;AAEjD,SAAS,uBAA2C;CAClD,IAAI;EACF,OAAQ,YAAY,mBAAmB,CAAC,CAAyB;CACnE,QAAQ;EACN;CACF;AACF;AAEA,SAAgB,yBAAyB,SAA2B;CAClE,MAAM,WAAW,WAAW,qBAAqB;CACjD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,OAAO,OAAO,SAAS,UAAU,EAAE,KAAK;AAC1C;AAYA,SAAS,kBAA2B;CAClC,OAAO,QAAQ,QAAQ,MAAM,KAAK,KAAK,CAAC,QAAQ,IAAI;AACtD;AAEA,SAAS,UAAU,QAAuB,SAAuC;CAC/E,MAAM,SAASA,eAAAA,iBAAiB;EAAE,MAAM,QAAQ;EAAM,MAAM,QAAQ;CAAK,CAAC;CAC1E,KAAK,MAAM,QAAQC,eAAAA,gBAAgB,MAAM,GACvC,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,IAAI;MACxC,OAAO,OAAO,OAAO,KAAK,IAAI;CAErC,OAAO;AACT;AAEA,SAAS,qBAAqB,SAAwD;CACpF,IAAI;CACJ,MAAM,SAAS,QAAQ,WAAW,QAAQ,KAAA,IAAY,QAAQ;CAC9D,QAAQ,MAAM;EACZ,MAAM,SAAS,UAAU,GAAG,OAAO;EACnC,IAAI,CAAC,OAAO,IAAI;EAEhB,MAAM,SAASC,eAAAA,aAAa;GAC1B,MAAM,OAAO;GACb,KAAK,QAAQ,OAAO,EAAE,OAAO;GAC7B;EACF,CAAC;EACD,IAAI,CAAC,QAAQ;GACX,EAAE,OAAO,OAAO,KACd,GAAGC,cAAAA,SAAS,oEACd;GACA;EACF;EAEA,IAAIC,eAAAA,mBAAmB,WAAW,GAAG;GACnC,EAAE,OAAO,OAAO,KAAK,GAAGD,cAAAA,SAAS,yBAAyB;GAC1D;EACF;EAEA,MAAM,QAAQE,eAAAA,WAAW;GAAE,aAAa,OAAO;GAAa;EAAO,CAAC;EACpE,MAAM,KAAK,UAAU,QAAQ;GAC3B,cAAc,KAAA;GACd,EAAE,OAAO,OAAO,MAAM,GAAGF,cAAAA,SAAS,mBAAmB,IAAI,SAAS;EACpE,CAAC;EACD,MAAM,KAAK,SAAS,MAAM,WAAW;GACnC,cAAc,KAAA;GACd,IAAI,QAAQ,SAAS,GACnB,EAAE,OAAO,OAAO,KAAK,GAAGA,cAAAA,SAAS,kBAAkB,MAAM;QACpD,IAAI,QACT,EAAE,OAAO,OAAO,KAAK,GAAGA,cAAAA,SAAS,mBAAmB,OAAO,EAAE;EAEjE,CAAC;EACD,cAAc;EACd,EAAE,OAAO,OAAO,KACd,GAAGA,cAAAA,SAAS,YAAY,OAAO,KAAK,WAAW,OAAO,QAAQ,GAAG,OAAO,KAAK,KAAK,GAAG,EAAE,EACzF;CACF;AACF;;;;;;;;AASA,SAAgB,WAAW,UAA6B,CAAC,GAAG,aAA8B;CACxF,OAAO;EACL,MAAM;EACN,gBAAgB,QAAQ;GACtB,IAAI,gBAAgB,KAAK,OAAO,YAC9B,OAAO,WAAW,KAAK,mBAAmB;IACxC,UAAU,QAAQ,OAAO;GAC3B,CAAC;GAGH,IAAI,CAAC,yBAAyB,WAAW,GACvC;GAGF,MAAM,YAAY;IAChB,KAAK;IACL,aAAa;IACb,OAAO,GAAkB;KACvB,UAAU,GAAG,OAAO;IACtB;GACF;GACA,MAAM,YACJ,QAAQ,WAAW,QACf,CAAC,SAAS,IACV,CACE,WACA;IACE,KAAK;IACL,aAAa;IACb,QAAQ,qBAAqB,OAAO;GACtC,CACF;GAEN,OAAO,iBAAiB;IACtB,OAAO;IACP,iBAAiB;GACnB,CAAC;EACH;CACF;AACF"}
|
package/dist/vite-plus.d.cts
CHANGED
|
@@ -1,51 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* ...cedarPgTasks(),
|
|
17
|
-
* test: {
|
|
18
|
-
* command: 'vp test',
|
|
19
|
-
* dependsOn: ['db:ensure-test'],
|
|
20
|
-
* env: ['DATABASE_URL', 'TEST_DATABASE_URL'],
|
|
21
|
-
* },
|
|
22
|
-
* dev: {
|
|
23
|
-
* command: 'vp dev',
|
|
24
|
-
* dependsOn: ['db:ensure'],
|
|
25
|
-
* env: ['DATABASE_URL'],
|
|
26
|
-
* },
|
|
27
|
-
* },
|
|
28
|
-
* },
|
|
29
|
-
* })
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
declare const CEDAR_PG_TASK_ENSURE_DEV = "db:ensure";
|
|
33
|
-
declare const CEDAR_PG_TASK_ENSURE_TEST = "db:ensure-test";
|
|
34
|
-
declare const CEDAR_PG_TASK_DISPOSE_TEST = "db:dispose-test";
|
|
35
|
-
type CedarPgTaskDef = {
|
|
36
|
-
command: string;
|
|
37
|
-
cache?: boolean;
|
|
38
|
-
};
|
|
39
|
-
type CedarPgTasksOptions = {
|
|
40
|
-
/** Binary name / path (default: CLI_NAME / `cedarpg`). */
|
|
41
|
-
bin?: string;
|
|
42
|
-
/** Include dispose-test task (default: true). */
|
|
43
|
-
includeDisposeTest?: boolean;
|
|
1
|
+
import { t as DbMode } from "./naming-C2nGVxPk.cjs";
|
|
2
|
+
import { a as CedarPgLifecycleTargetsOptions, i as CedarPgLifecycleTarget, n as CEDAR_PG_TASK_ACQUIRE_TEST, o as cedarPgLifecycleTargets, r as CEDAR_PG_TASK_DISPOSE_TEST, t as CEDAR_PG_TASK_ACQUIRE_DEV } from "./tasks-DdQoP9We.cjs";
|
|
3
|
+
import { Plugin } from "vite";
|
|
4
|
+
//#region src/adapters/studio.d.ts
|
|
5
|
+
type StudioKind = "prisma" | "drizzle";
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/adapters/vite-dev-plugin.d.ts
|
|
8
|
+
type CedarPgDevOptions = {
|
|
9
|
+
mode?: DbMode;
|
|
10
|
+
/** Worktree / lease root. Omit to resolve from cwd (git toplevel). */
|
|
11
|
+
root?: string;
|
|
12
|
+
/** App package to search for Prisma/Drizzle. Defaults to Vite `config.root`. */
|
|
13
|
+
cwd?: string;
|
|
14
|
+
/** Force Prisma/Drizzle Studio; `false` disables the `s` shortcut. Omit to auto-detect. */
|
|
15
|
+
studio?: StudioKind | false;
|
|
44
16
|
};
|
|
45
17
|
/**
|
|
46
|
-
*
|
|
18
|
+
* Vite / Vite+ plugin: print a cedar-pg status panel on listen and register
|
|
19
|
+
* CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —
|
|
20
|
+
* pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.
|
|
21
|
+
*
|
|
22
|
+
* @param viteVersion Test-only override for the shortcut gate. Omit in production.
|
|
47
23
|
*/
|
|
48
|
-
declare function
|
|
24
|
+
declare function cedarPgDev(options?: CedarPgDevOptions, viteVersion?: string): Plugin;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/adapters/vite-plus.d.ts
|
|
27
|
+
type CedarPgTaskDef = CedarPgLifecycleTarget;
|
|
28
|
+
type CedarPgTasksOptions = CedarPgLifecycleTargetsOptions;
|
|
49
29
|
//#endregion
|
|
50
|
-
export {
|
|
30
|
+
export { CEDAR_PG_TASK_ACQUIRE_DEV, CEDAR_PG_TASK_ACQUIRE_TEST, CEDAR_PG_TASK_DISPOSE_TEST, type CedarPgDevOptions, CedarPgTaskDef, CedarPgTasksOptions, cedarPgDev, cedarPgLifecycleTargets as cedarPgTasks };
|
|
51
31
|
//# sourceMappingURL=vite-plus.d.cts.map
|
package/dist/vite-plus.d.mts
CHANGED
|
@@ -1,51 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* ...cedarPgTasks(),
|
|
17
|
-
* test: {
|
|
18
|
-
* command: 'vp test',
|
|
19
|
-
* dependsOn: ['db:ensure-test'],
|
|
20
|
-
* env: ['DATABASE_URL', 'TEST_DATABASE_URL'],
|
|
21
|
-
* },
|
|
22
|
-
* dev: {
|
|
23
|
-
* command: 'vp dev',
|
|
24
|
-
* dependsOn: ['db:ensure'],
|
|
25
|
-
* env: ['DATABASE_URL'],
|
|
26
|
-
* },
|
|
27
|
-
* },
|
|
28
|
-
* },
|
|
29
|
-
* })
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
declare const CEDAR_PG_TASK_ENSURE_DEV = "db:ensure";
|
|
33
|
-
declare const CEDAR_PG_TASK_ENSURE_TEST = "db:ensure-test";
|
|
34
|
-
declare const CEDAR_PG_TASK_DISPOSE_TEST = "db:dispose-test";
|
|
35
|
-
type CedarPgTaskDef = {
|
|
36
|
-
command: string;
|
|
37
|
-
cache?: boolean;
|
|
38
|
-
};
|
|
39
|
-
type CedarPgTasksOptions = {
|
|
40
|
-
/** Binary name / path (default: CLI_NAME / `cedarpg`). */
|
|
41
|
-
bin?: string;
|
|
42
|
-
/** Include dispose-test task (default: true). */
|
|
43
|
-
includeDisposeTest?: boolean;
|
|
1
|
+
import { t as DbMode } from "./naming-C2nGVxPk.mjs";
|
|
2
|
+
import { a as CedarPgLifecycleTargetsOptions, i as CedarPgLifecycleTarget, n as CEDAR_PG_TASK_ACQUIRE_TEST, o as cedarPgLifecycleTargets, r as CEDAR_PG_TASK_DISPOSE_TEST, t as CEDAR_PG_TASK_ACQUIRE_DEV } from "./tasks-CjaZRi_G.mjs";
|
|
3
|
+
import { Plugin } from "vite";
|
|
4
|
+
//#region src/adapters/studio.d.ts
|
|
5
|
+
type StudioKind = "prisma" | "drizzle";
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/adapters/vite-dev-plugin.d.ts
|
|
8
|
+
type CedarPgDevOptions = {
|
|
9
|
+
mode?: DbMode;
|
|
10
|
+
/** Worktree / lease root. Omit to resolve from cwd (git toplevel). */
|
|
11
|
+
root?: string;
|
|
12
|
+
/** App package to search for Prisma/Drizzle. Defaults to Vite `config.root`. */
|
|
13
|
+
cwd?: string;
|
|
14
|
+
/** Force Prisma/Drizzle Studio; `false` disables the `s` shortcut. Omit to auto-detect. */
|
|
15
|
+
studio?: StudioKind | false;
|
|
44
16
|
};
|
|
45
17
|
/**
|
|
46
|
-
*
|
|
18
|
+
* Vite / Vite+ plugin: print a cedar-pg status panel on listen and register
|
|
19
|
+
* CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —
|
|
20
|
+
* pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.
|
|
21
|
+
*
|
|
22
|
+
* @param viteVersion Test-only override for the shortcut gate. Omit in production.
|
|
47
23
|
*/
|
|
48
|
-
declare function
|
|
24
|
+
declare function cedarPgDev(options?: CedarPgDevOptions, viteVersion?: string): Plugin;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/adapters/vite-plus.d.ts
|
|
27
|
+
type CedarPgTaskDef = CedarPgLifecycleTarget;
|
|
28
|
+
type CedarPgTasksOptions = CedarPgLifecycleTargetsOptions;
|
|
49
29
|
//#endregion
|
|
50
|
-
export {
|
|
30
|
+
export { CEDAR_PG_TASK_ACQUIRE_DEV, CEDAR_PG_TASK_ACQUIRE_TEST, CEDAR_PG_TASK_DISPOSE_TEST, type CedarPgDevOptions, CedarPgTaskDef, CedarPgTasksOptions, cedarPgDev, cedarPgLifecycleTargets as cedarPgTasks };
|
|
51
31
|
//# sourceMappingURL=vite-plus.d.mts.map
|
package/dist/vite-plus.mjs
CHANGED
|
@@ -1,29 +1,131 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import { t as
|
|
1
|
+
import { p as CLI_NAME } from "./lease-DS1SX8U_.mjs";
|
|
2
|
+
import { t as resolveDevStatus } from "./status-Dcnpgnlz.mjs";
|
|
3
|
+
import { a as formatDevStatus, i as studioChildRunning, n as openStudio, t as detectStudio } from "./studio-DIFw1qWC.mjs";
|
|
4
|
+
import { i as cedarPgLifecycleTargets, n as CEDAR_PG_TASK_ACQUIRE_TEST, r as CEDAR_PG_TASK_DISPOSE_TEST, t as CEDAR_PG_TASK_ACQUIRE_DEV } from "./tasks-D5iWIdlo.mjs";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
//#region src/adapters/vite-dev-plugin.ts
|
|
7
|
+
const requireVite = createRequire(import.meta.url);
|
|
8
|
+
function installedViteVersion() {
|
|
9
|
+
try {
|
|
10
|
+
return requireVite("vite/package.json").version;
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function viteBindsPluginShortcuts(version) {
|
|
16
|
+
const resolved = version ?? installedViteVersion();
|
|
17
|
+
if (resolved === void 0) return false;
|
|
18
|
+
return Number.parseInt(resolved, 10) >= 8;
|
|
19
|
+
}
|
|
20
|
+
function shouldShowPanel() {
|
|
21
|
+
return Boolean(process.stdin.isTTY) && !process.env.CI;
|
|
22
|
+
}
|
|
23
|
+
function logStatus(server, options) {
|
|
24
|
+
const status = resolveDevStatus({
|
|
25
|
+
root: options.root,
|
|
26
|
+
mode: options.mode
|
|
27
|
+
});
|
|
28
|
+
for (const line of formatDevStatus(status)) if (status.ok) server.config.logger.info(line);
|
|
29
|
+
else server.config.logger.warn(line);
|
|
30
|
+
return status;
|
|
31
|
+
}
|
|
32
|
+
function createStudioLauncher(options) {
|
|
33
|
+
let studioChild;
|
|
34
|
+
const prefer = options.studio === false ? void 0 : options.studio;
|
|
35
|
+
return (s) => {
|
|
36
|
+
const status = logStatus(s, options);
|
|
37
|
+
if (!status.ok) return;
|
|
38
|
+
const studio = detectStudio({
|
|
39
|
+
root: status.root,
|
|
40
|
+
cwd: options.cwd ?? s.config.root,
|
|
41
|
+
prefer
|
|
42
|
+
});
|
|
43
|
+
if (!studio) {
|
|
44
|
+
s.config.logger.warn(`${CLI_NAME}: no Prisma or Drizzle Studio found (install prisma or drizzle-kit)`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (studioChildRunning(studioChild)) {
|
|
48
|
+
s.config.logger.info(`${CLI_NAME}: studio already running`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const child = openStudio({
|
|
52
|
+
databaseUrl: status.databaseUrl,
|
|
53
|
+
studio
|
|
54
|
+
});
|
|
55
|
+
child.once("error", (err) => {
|
|
56
|
+
studioChild = void 0;
|
|
57
|
+
s.config.logger.error(`${CLI_NAME}: studio failed: ${err.message}`);
|
|
58
|
+
});
|
|
59
|
+
child.once("exit", (code, signal) => {
|
|
60
|
+
studioChild = void 0;
|
|
61
|
+
if (code && code !== 0) s.config.logger.warn(`${CLI_NAME}: studio exited ${code}`);
|
|
62
|
+
else if (signal) s.config.logger.warn(`${CLI_NAME}: studio killed (${signal})`);
|
|
63
|
+
});
|
|
64
|
+
studioChild = child;
|
|
65
|
+
s.config.logger.info(`${CLI_NAME}: opening ${studio.kind} studio (${studio.command} ${studio.args.join(" ")})`);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Vite / Vite+ plugin: print a cedar-pg status panel on listen and register
|
|
70
|
+
* CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —
|
|
71
|
+
* pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.
|
|
72
|
+
*
|
|
73
|
+
* @param viteVersion Test-only override for the shortcut gate. Omit in production.
|
|
74
|
+
*/
|
|
75
|
+
function cedarPgDev(options = {}, viteVersion) {
|
|
76
|
+
return {
|
|
77
|
+
name: "cedar-pg-dev",
|
|
78
|
+
configureServer(server) {
|
|
79
|
+
if (shouldShowPanel() && server.httpServer) server.httpServer.once("listening", () => {
|
|
80
|
+
logStatus(server, options);
|
|
81
|
+
});
|
|
82
|
+
if (!viteBindsPluginShortcuts(viteVersion)) return;
|
|
83
|
+
const dShortcut = {
|
|
84
|
+
key: "d",
|
|
85
|
+
description: "show cedar-pg database status",
|
|
86
|
+
action(s) {
|
|
87
|
+
logStatus(s, options);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const shortcuts = options.studio === false ? [dShortcut] : [dShortcut, {
|
|
91
|
+
key: "s",
|
|
92
|
+
description: "open Prisma/Drizzle studio (cedar-pg DATABASE_URL)",
|
|
93
|
+
action: createStudioLauncher(options)
|
|
94
|
+
}];
|
|
95
|
+
server.bindCLIShortcuts({
|
|
96
|
+
print: false,
|
|
97
|
+
customShortcuts: shortcuts
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
3
103
|
//#region src/adapters/vite-plus.ts
|
|
4
104
|
/**
|
|
5
105
|
* Consumer adapter for external Vite+ projects.
|
|
6
106
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
107
|
+
* - `cedarPgTasks()` — merge into `run.tasks` so `vp run test` / `vp run dev`
|
|
108
|
+
* depend on cedarpg acquire.
|
|
109
|
+
* - `cedarPgDev()` — Vite plugin: status panel + `d` / `s` shortcuts on Vite 8 (no acquire).
|
|
9
110
|
*
|
|
10
111
|
* @example
|
|
11
112
|
* ```ts
|
|
12
113
|
* import { defineConfig } from 'vite-plus'
|
|
13
|
-
* import { cedarPgTasks } from '@cedarjs/pg/vite-plus'
|
|
114
|
+
* import { cedarPgTasks, cedarPgDev } from '@cedarjs/pg/vite-plus'
|
|
14
115
|
*
|
|
15
116
|
* export default defineConfig({
|
|
117
|
+
* plugins: [cedarPgDev()],
|
|
16
118
|
* run: {
|
|
17
119
|
* tasks: {
|
|
18
120
|
* ...cedarPgTasks(),
|
|
19
121
|
* test: {
|
|
20
122
|
* command: 'vp test',
|
|
21
|
-
* dependsOn: ['db:
|
|
123
|
+
* dependsOn: ['db:acquire-test'],
|
|
22
124
|
* env: ['DATABASE_URL', 'TEST_DATABASE_URL'],
|
|
23
125
|
* },
|
|
24
126
|
* dev: {
|
|
25
127
|
* command: 'vp dev',
|
|
26
|
-
* dependsOn: ['db:
|
|
128
|
+
* dependsOn: ['db:acquire'],
|
|
27
129
|
* env: ['DATABASE_URL'],
|
|
28
130
|
* },
|
|
29
131
|
* },
|
|
@@ -31,31 +133,7 @@ import { t as cedarPgCommands } from "./tasks-13P6tMth.mjs";
|
|
|
31
133
|
* })
|
|
32
134
|
* ```
|
|
33
135
|
*/
|
|
34
|
-
const CEDAR_PG_TASK_ENSURE_DEV = "db:ensure";
|
|
35
|
-
const CEDAR_PG_TASK_ENSURE_TEST = "db:ensure-test";
|
|
36
|
-
const CEDAR_PG_TASK_DISPOSE_TEST = "db:dispose-test";
|
|
37
|
-
/**
|
|
38
|
-
* Returns Vite+ `run.tasks` entries for cedar-pg lifecycle.
|
|
39
|
-
*/
|
|
40
|
-
function cedarPgTasks(options = {}) {
|
|
41
|
-
const cmds = cedarPgCommands(options.bin ?? "cedarpg");
|
|
42
|
-
const tasks = {
|
|
43
|
-
[CEDAR_PG_TASK_ENSURE_DEV]: {
|
|
44
|
-
command: cmds.ensureDev,
|
|
45
|
-
cache: false
|
|
46
|
-
},
|
|
47
|
-
[CEDAR_PG_TASK_ENSURE_TEST]: {
|
|
48
|
-
command: cmds.ensureTest,
|
|
49
|
-
cache: false
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
if (options.includeDisposeTest !== false) tasks[CEDAR_PG_TASK_DISPOSE_TEST] = {
|
|
53
|
-
command: cmds.disposeTest,
|
|
54
|
-
cache: false
|
|
55
|
-
};
|
|
56
|
-
return tasks;
|
|
57
|
-
}
|
|
58
136
|
//#endregion
|
|
59
|
-
export {
|
|
137
|
+
export { CEDAR_PG_TASK_ACQUIRE_DEV, CEDAR_PG_TASK_ACQUIRE_TEST, CEDAR_PG_TASK_DISPOSE_TEST, cedarPgDev, cedarPgLifecycleTargets as cedarPgTasks };
|
|
60
138
|
|
|
61
139
|
//# sourceMappingURL=vite-plus.mjs.map
|
package/dist/vite-plus.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plus.mjs","names":[],"sources":["../src/adapters/vite-plus.ts"],"sourcesContent":["/**\n * Consumer adapter for external Vite+ projects.\n *\n *
|
|
1
|
+
{"version":3,"file":"vite-plus.mjs","names":[],"sources":["../src/adapters/vite-dev-plugin.ts","../src/adapters/vite-plus.ts"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport type { ChildProcess } from \"node:child_process\";\nimport type { Plugin, ViteDevServer } from \"vite\";\nimport { CLI_NAME } from \"../core/constants.ts\";\nimport { resolveDevStatus, type DevStatus } from \"../core/status.ts\";\nimport type { DbMode } from \"../core/naming.ts\";\nimport { formatDevStatus } from \"./status-format.ts\";\nimport { detectStudio, openStudio, studioChildRunning, type StudioKind } from \"./studio.ts\";\n\nconst requireVite = createRequire(import.meta.url);\n\nfunction installedViteVersion(): string | undefined {\n try {\n return (requireVite(\"vite/package.json\") as { version: string }).version;\n } catch {\n return undefined;\n }\n}\n\nexport function viteBindsPluginShortcuts(version?: string): boolean {\n const resolved = version ?? installedViteVersion();\n if (resolved === undefined) return false;\n return Number.parseInt(resolved, 10) >= 8;\n}\n\nexport type CedarPgDevOptions = {\n mode?: DbMode;\n /** Worktree / lease root. Omit to resolve from cwd (git toplevel). */\n root?: string;\n /** App package to search for Prisma/Drizzle. Defaults to Vite `config.root`. */\n cwd?: string;\n /** Force Prisma/Drizzle Studio; `false` disables the `s` shortcut. Omit to auto-detect. */\n studio?: StudioKind | false;\n};\n\nfunction shouldShowPanel(): boolean {\n return Boolean(process.stdin.isTTY) && !process.env.CI;\n}\n\nfunction logStatus(server: ViteDevServer, options: CedarPgDevOptions): DevStatus {\n const status = resolveDevStatus({ root: options.root, mode: options.mode });\n for (const line of formatDevStatus(status)) {\n if (status.ok) server.config.logger.info(line);\n else server.config.logger.warn(line);\n }\n return status;\n}\n\nfunction createStudioLauncher(options: CedarPgDevOptions): (s: ViteDevServer) => void {\n let studioChild: ChildProcess | undefined;\n const prefer = options.studio === false ? undefined : options.studio;\n return (s) => {\n const status = logStatus(s, options);\n if (!status.ok) return;\n\n const studio = detectStudio({\n root: status.root,\n cwd: options.cwd ?? s.config.root,\n prefer,\n });\n if (!studio) {\n s.config.logger.warn(\n `${CLI_NAME}: no Prisma or Drizzle Studio found (install prisma or drizzle-kit)`,\n );\n return;\n }\n\n if (studioChildRunning(studioChild)) {\n s.config.logger.info(`${CLI_NAME}: studio already running`);\n return;\n }\n\n const child = openStudio({ databaseUrl: status.databaseUrl, studio });\n child.once(\"error\", (err) => {\n studioChild = undefined;\n s.config.logger.error(`${CLI_NAME}: studio failed: ${err.message}`);\n });\n child.once(\"exit\", (code, signal) => {\n studioChild = undefined;\n if (code && code !== 0) {\n s.config.logger.warn(`${CLI_NAME}: studio exited ${code}`);\n } else if (signal) {\n s.config.logger.warn(`${CLI_NAME}: studio killed (${signal})`);\n }\n });\n studioChild = child;\n s.config.logger.info(\n `${CLI_NAME}: opening ${studio.kind} studio (${studio.command} ${studio.args.join(\" \")})`,\n );\n };\n}\n\n/**\n * Vite / Vite+ plugin: print a cedar-pg status panel on listen and register\n * CLI shortcuts (`d` status, `s` studio) on Vite 8+. Does **not** acquire —\n * pair with `cedarPgTasks()` / `dependsOn: ['db:acquire']`.\n *\n * @param viteVersion Test-only override for the shortcut gate. Omit in production.\n */\nexport function cedarPgDev(options: CedarPgDevOptions = {}, viteVersion?: string): Plugin {\n return {\n name: \"cedar-pg-dev\",\n configureServer(server) {\n if (shouldShowPanel() && server.httpServer) {\n server.httpServer.once(\"listening\", () => {\n logStatus(server, options);\n });\n }\n\n if (!viteBindsPluginShortcuts(viteVersion)) {\n return;\n }\n\n const dShortcut = {\n key: \"d\",\n description: \"show cedar-pg database status\",\n action(s: ViteDevServer) {\n logStatus(s, options);\n },\n };\n const shortcuts =\n options.studio === false\n ? [dShortcut]\n : [\n dShortcut,\n {\n key: \"s\",\n description: \"open Prisma/Drizzle studio (cedar-pg DATABASE_URL)\",\n action: createStudioLauncher(options),\n },\n ];\n\n server.bindCLIShortcuts({\n print: false,\n customShortcuts: shortcuts,\n });\n },\n };\n}\n","/**\n * Consumer adapter for external Vite+ projects.\n *\n * - `cedarPgTasks()` — merge into `run.tasks` so `vp run test` / `vp run dev`\n * depend on cedarpg acquire.\n * - `cedarPgDev()` — Vite plugin: status panel + `d` / `s` shortcuts on Vite 8 (no acquire).\n *\n * @example\n * ```ts\n * import { defineConfig } from 'vite-plus'\n * import { cedarPgTasks, cedarPgDev } from '@cedarjs/pg/vite-plus'\n *\n * export default defineConfig({\n * plugins: [cedarPgDev()],\n * run: {\n * tasks: {\n * ...cedarPgTasks(),\n * test: {\n * command: 'vp test',\n * dependsOn: ['db:acquire-test'],\n * env: ['DATABASE_URL', 'TEST_DATABASE_URL'],\n * },\n * dev: {\n * command: 'vp dev',\n * dependsOn: ['db:acquire'],\n * env: ['DATABASE_URL'],\n * },\n * },\n * },\n * })\n * ```\n */\n\nimport {\n cedarPgLifecycleTargets,\n type CedarPgLifecycleTarget,\n type CedarPgLifecycleTargetsOptions,\n CEDAR_PG_TASK_DISPOSE_TEST,\n CEDAR_PG_TASK_ACQUIRE_DEV,\n CEDAR_PG_TASK_ACQUIRE_TEST,\n} from \"./tasks.ts\";\n\nexport {\n CEDAR_PG_TASK_ACQUIRE_DEV,\n CEDAR_PG_TASK_ACQUIRE_TEST,\n CEDAR_PG_TASK_DISPOSE_TEST,\n cedarPgLifecycleTargets as cedarPgTasks,\n};\n\nexport type CedarPgTaskDef = CedarPgLifecycleTarget;\nexport type CedarPgTasksOptions = CedarPgLifecycleTargetsOptions;\n\nexport { cedarPgDev } from \"./vite-dev-plugin.ts\";\nexport type { CedarPgDevOptions } from \"./vite-dev-plugin.ts\";\n"],"mappings":";;;;;;AASA,MAAM,cAAc,cAAc,OAAO,KAAK,GAAG;AAEjD,SAAS,uBAA2C;CAClD,IAAI;EACF,OAAQ,YAAY,mBAAmB,CAAC,CAAyB;CACnE,QAAQ;EACN;CACF;AACF;AAEA,SAAgB,yBAAyB,SAA2B;CAClE,MAAM,WAAW,WAAW,qBAAqB;CACjD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,OAAO,OAAO,SAAS,UAAU,EAAE,KAAK;AAC1C;AAYA,SAAS,kBAA2B;CAClC,OAAO,QAAQ,QAAQ,MAAM,KAAK,KAAK,CAAC,QAAQ,IAAI;AACtD;AAEA,SAAS,UAAU,QAAuB,SAAuC;CAC/E,MAAM,SAAS,iBAAiB;EAAE,MAAM,QAAQ;EAAM,MAAM,QAAQ;CAAK,CAAC;CAC1E,KAAK,MAAM,QAAQ,gBAAgB,MAAM,GACvC,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,IAAI;MACxC,OAAO,OAAO,OAAO,KAAK,IAAI;CAErC,OAAO;AACT;AAEA,SAAS,qBAAqB,SAAwD;CACpF,IAAI;CACJ,MAAM,SAAS,QAAQ,WAAW,QAAQ,KAAA,IAAY,QAAQ;CAC9D,QAAQ,MAAM;EACZ,MAAM,SAAS,UAAU,GAAG,OAAO;EACnC,IAAI,CAAC,OAAO,IAAI;EAEhB,MAAM,SAAS,aAAa;GAC1B,MAAM,OAAO;GACb,KAAK,QAAQ,OAAO,EAAE,OAAO;GAC7B;EACF,CAAC;EACD,IAAI,CAAC,QAAQ;GACX,EAAE,OAAO,OAAO,KACd,GAAG,SAAS,oEACd;GACA;EACF;EAEA,IAAI,mBAAmB,WAAW,GAAG;GACnC,EAAE,OAAO,OAAO,KAAK,GAAG,SAAS,yBAAyB;GAC1D;EACF;EAEA,MAAM,QAAQ,WAAW;GAAE,aAAa,OAAO;GAAa;EAAO,CAAC;EACpE,MAAM,KAAK,UAAU,QAAQ;GAC3B,cAAc,KAAA;GACd,EAAE,OAAO,OAAO,MAAM,GAAG,SAAS,mBAAmB,IAAI,SAAS;EACpE,CAAC;EACD,MAAM,KAAK,SAAS,MAAM,WAAW;GACnC,cAAc,KAAA;GACd,IAAI,QAAQ,SAAS,GACnB,EAAE,OAAO,OAAO,KAAK,GAAG,SAAS,kBAAkB,MAAM;QACpD,IAAI,QACT,EAAE,OAAO,OAAO,KAAK,GAAG,SAAS,mBAAmB,OAAO,EAAE;EAEjE,CAAC;EACD,cAAc;EACd,EAAE,OAAO,OAAO,KACd,GAAG,SAAS,YAAY,OAAO,KAAK,WAAW,OAAO,QAAQ,GAAG,OAAO,KAAK,KAAK,GAAG,EAAE,EACzF;CACF;AACF;;;;;;;;AASA,SAAgB,WAAW,UAA6B,CAAC,GAAG,aAA8B;CACxF,OAAO;EACL,MAAM;EACN,gBAAgB,QAAQ;GACtB,IAAI,gBAAgB,KAAK,OAAO,YAC9B,OAAO,WAAW,KAAK,mBAAmB;IACxC,UAAU,QAAQ,OAAO;GAC3B,CAAC;GAGH,IAAI,CAAC,yBAAyB,WAAW,GACvC;GAGF,MAAM,YAAY;IAChB,KAAK;IACL,aAAa;IACb,OAAO,GAAkB;KACvB,UAAU,GAAG,OAAO;IACtB;GACF;GACA,MAAM,YACJ,QAAQ,WAAW,QACf,CAAC,SAAS,IACV,CACE,WACA;IACE,KAAK;IACL,aAAa;IACb,QAAQ,qBAAqB,OAAO;GACtC,CACF;GAEN,OAAO,iBAAiB;IACtB,OAAO;IACP,iBAAiB;GACnB,CAAC;EACH;CACF;AACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_template_mode = require("./template-mode-JTOxrEgE.cjs");
|
|
6
|
+
//#region src/adapters/vitest-template.ts
|
|
7
|
+
/**
|
|
8
|
+
* Vitest globalSetup (template mode). Returns teardown that disposes TEMPLATE + clones.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* // vitest.cedar-global.ts
|
|
12
|
+
* import { createGlobalSetup } from "@cedarjs/pg/vitest/template";
|
|
13
|
+
* export default createGlobalSetup({ migrate: async ({ databaseUrl }) => {} });
|
|
14
|
+
*
|
|
15
|
+
* // vitest.config.ts
|
|
16
|
+
* export default defineConfig({
|
|
17
|
+
* test: {
|
|
18
|
+
* globalSetup: ["./vitest.cedar-global.ts"],
|
|
19
|
+
* setupFiles: ["./vitest.cedar-worker.ts"],
|
|
20
|
+
* },
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* // vitest.cedar-worker.ts — local ESM (pack emits CJS+ESM; top-level await lives here)
|
|
24
|
+
* import { cloneWorkerDatabase } from "@cedarjs/pg/vitest/template";
|
|
25
|
+
* await cloneWorkerDatabase();
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* Stock `@cedarjs/pg/vitest` is one shared test DB only.
|
|
29
|
+
*/
|
|
30
|
+
function createGlobalSetup(options) {
|
|
31
|
+
return async () => {
|
|
32
|
+
const result = await require_template_mode.setupTemplateMode(options);
|
|
33
|
+
if (result.status !== "acquired") return async () => {};
|
|
34
|
+
return async () => {
|
|
35
|
+
await result.dispose();
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** String path without a migrate hook is unsupported — use `createGlobalSetup`. */
|
|
40
|
+
async function setup() {
|
|
41
|
+
throw new Error("@cedarjs/pg/vitest/template requires createGlobalSetup({ migrate }). Point globalSetup at a local module that exports createGlobalSetup({ migrate }).");
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
exports.cloneWorkerDatabase = require_template_mode.cloneWorkerDatabase;
|
|
45
|
+
exports.createGlobalSetup = createGlobalSetup;
|
|
46
|
+
exports.default = setup;
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=vitest-template.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest-template.cjs","names":["setupTemplateMode"],"sources":["../src/adapters/vitest-template.ts"],"sourcesContent":["import {\n cloneWorkerDatabase,\n setupTemplateMode,\n type SetupTemplateModeOptions,\n} from \"./template-mode.ts\";\n\nexport { cloneWorkerDatabase };\nexport type {\n SetupTemplateModeOptions,\n TemplateMigrateFn,\n TemplateMigrateContext,\n} from \"./template-mode.ts\";\n\n/**\n * Vitest globalSetup (template mode). Returns teardown that disposes TEMPLATE + clones.\n *\n * ```ts\n * // vitest.cedar-global.ts\n * import { createGlobalSetup } from \"@cedarjs/pg/vitest/template\";\n * export default createGlobalSetup({ migrate: async ({ databaseUrl }) => {} });\n *\n * // vitest.config.ts\n * export default defineConfig({\n * test: {\n * globalSetup: [\"./vitest.cedar-global.ts\"],\n * setupFiles: [\"./vitest.cedar-worker.ts\"],\n * },\n * })\n *\n * // vitest.cedar-worker.ts — local ESM (pack emits CJS+ESM; top-level await lives here)\n * import { cloneWorkerDatabase } from \"@cedarjs/pg/vitest/template\";\n * await cloneWorkerDatabase();\n * ```\n *\n * Stock `@cedarjs/pg/vitest` is one shared test DB only.\n */\nexport function createGlobalSetup(options: SetupTemplateModeOptions) {\n return async () => {\n const result = await setupTemplateMode(options);\n if (result.status !== \"acquired\") {\n return async () => {};\n }\n return async () => {\n await result.dispose();\n };\n };\n}\n\n/** String path without a migrate hook is unsupported — use `createGlobalSetup`. */\nexport default async function setup(): Promise<() => Promise<void>> {\n throw new Error(\n \"@cedarjs/pg/vitest/template requires createGlobalSetup({ migrate }). \" +\n \"Point globalSetup at a local module that exports createGlobalSetup({ migrate }).\",\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,kBAAkB,SAAmC;CACnE,OAAO,YAAY;EACjB,MAAM,SAAS,MAAMA,sBAAAA,kBAAkB,OAAO;EAC9C,IAAI,OAAO,WAAW,YACpB,OAAO,YAAY,CAAC;EAEtB,OAAO,YAAY;GACjB,MAAM,OAAO,QAAQ;EACvB;CACF;AACF;;AAGA,eAA8B,QAAsC;CAClE,MAAM,IAAI,MACR,uJAEF;AACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { i as cloneWorkerDatabase, n as TemplateMigrateContext, r as TemplateMigrateFn, t as SetupTemplateModeOptions } from "./template-mode-CzyVwHsi.cjs";
|
|
2
|
+
//#region src/adapters/vitest-template.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Vitest globalSetup (template mode). Returns teardown that disposes TEMPLATE + clones.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* // vitest.cedar-global.ts
|
|
8
|
+
* import { createGlobalSetup } from "@cedarjs/pg/vitest/template";
|
|
9
|
+
* export default createGlobalSetup({ migrate: async ({ databaseUrl }) => {} });
|
|
10
|
+
*
|
|
11
|
+
* // vitest.config.ts
|
|
12
|
+
* export default defineConfig({
|
|
13
|
+
* test: {
|
|
14
|
+
* globalSetup: ["./vitest.cedar-global.ts"],
|
|
15
|
+
* setupFiles: ["./vitest.cedar-worker.ts"],
|
|
16
|
+
* },
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* // vitest.cedar-worker.ts — local ESM (pack emits CJS+ESM; top-level await lives here)
|
|
20
|
+
* import { cloneWorkerDatabase } from "@cedarjs/pg/vitest/template";
|
|
21
|
+
* await cloneWorkerDatabase();
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Stock `@cedarjs/pg/vitest` is one shared test DB only.
|
|
25
|
+
*/
|
|
26
|
+
declare function createGlobalSetup(options: SetupTemplateModeOptions): () => Promise<() => Promise<void>>;
|
|
27
|
+
/** String path without a migrate hook is unsupported — use `createGlobalSetup`. */
|
|
28
|
+
declare function setup(): Promise<() => Promise<void>>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { type SetupTemplateModeOptions, type TemplateMigrateContext, type TemplateMigrateFn, cloneWorkerDatabase, createGlobalSetup, setup as default };
|
|
31
|
+
//# sourceMappingURL=vitest-template.d.cts.map
|