@prostgles/app 2.3.6-dev.1788978204 → 2.3.6-dev.1789046358
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/client/build/js/298.bundle.js +1 -1
- package/client/build/js/main.bundle.js +2 -2
- package/dist/common/managedTableSchema.d.ts +1 -0
- package/dist/common/managedTableSchema.d.ts.map +1 -1
- package/dist/common/managedTableSchema.js +7 -1
- package/dist/common/managedTableSchema.js.map +1 -1
- package/dist/common/mcp/ui.mcp.schema.js +1 -1
- package/dist/common/prostglesApiTypes.d.ts +1 -1
- package/dist/common/prostglesApiTypes.d.ts.map +1 -1
- package/dist/common/prostglesApiTypes.js +5 -5
- package/dist/server/package.json +2 -2
- package/dist/server/src/ConnectionManager/getTableAuditConfig.d.ts +1 -1
- package/dist/server/src/ConnectionManager/getTableAuditConfig.d.ts.map +1 -1
- package/dist/server/src/ConnectionManager/getTableAuditConfig.js +3 -0
- package/dist/server/src/ConnectionManager/getTableAuditConfig.js.map +1 -1
- package/dist/server/src/ConnectionManager/modifyClientSchema.js +1 -1
- package/dist/server/src/ConnectionManager/modifyClientSchema.js.map +1 -1
- package/dist/server/src/ConnectionManager/syncSchemaConfig.d.ts.map +1 -1
- package/dist/server/src/ConnectionManager/syncSchemaConfig.js +11 -0
- package/dist/server/src/ConnectionManager/syncSchemaConfig.js.map +1 -1
- package/dist/server/src/McpHub/DockerSandbox/createContainer.spec.js +1 -1
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Prostgles/agenticWorkflow/runtimeSetup/getAgenticWorkflowDockerCoreFiles.d.ts +2 -2
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Prostgles/agenticWorkflow/runtimeSetup/getAgenticWorkflowDockerCoreFiles.d.ts.map +1 -1
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Prostgles/agenticWorkflow/runtimeSetup/getAgenticWorkflowDockerCoreFiles.js +2 -2
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/WebDev/tools/utils.js +1 -1
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/WebDev/tools/utils.js.map +1 -1
- package/dist/server/src/ServiceManager/ServiceManagerTypes.d.ts +3 -3
- package/dist/server/src/ServiceManager/getServiceManager.d.ts +3 -3
- package/dist/server/src/ServiceManager/services/documents/documents.service.d.ts +2 -2
- package/dist/server/src/ServiceManager/services/documents/documents.service.js +2 -2
- package/dist/server/src/ServiceManager/services/speechToText/speechToText.service.d.ts +1 -1
- package/dist/server/src/ServiceManager/services/speechToText/speechToText.service.js +1 -1
- package/dist/server/src/ServiceManager/services/speechToText/speechToText.service.js.map +1 -1
- package/dist/server/src/cli/Dockerfile +1 -1
- package/dist/server/src/cli/cli.js +91 -22
- package/dist/server/src/cli/cli.js.map +1 -1
- package/dist/server/src/cli/cliTemplateFiles.js +10 -2
- package/dist/server/src/cli/cliTemplateFiles.js.map +1 -1
- package/dist/server/src/cli/startTemporaryDatabases.d.ts +18 -0
- package/dist/server/src/cli/startTemporaryDatabases.d.ts.map +1 -0
- package/dist/server/src/cli/startTemporaryDatabases.js +198 -0
- package/dist/server/src/cli/startTemporaryDatabases.js.map +1 -0
- package/dist/server/src/cli/testing/createTestDeployment.d.ts +2 -0
- package/dist/server/src/cli/testing/createTestDeployment.d.ts.map +1 -1
- package/dist/server/src/cli/testing/createTestDeployment.js +6 -157
- package/dist/server/src/cli/testing/createTestDeployment.js.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/webApp/buildWebApp.js +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/webApp/buildWebApp.js.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/webApp/runDockerForWebApp.d.ts +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/webApp/runDockerForWebApp.d.ts.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/webApp/testWebApp.js +1 -1
- package/dist/server/src/tableHooks/accessControl.tableHooks.d.ts +4 -0
- package/dist/server/src/tableHooks/accessControl.tableHooks.d.ts.map +1 -0
- package/dist/server/src/tableHooks/accessControl.tableHooks.js +54 -0
- package/dist/server/src/tableHooks/accessControl.tableHooks.js.map +1 -0
- package/dist/server/src/tableHooks/tableHooks.d.ts.map +1 -1
- package/dist/server/src/tableHooks/tableHooks.js +2 -0
- package/dist/server/src/tableHooks/tableHooks.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const child_process_1 = require("child_process");
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
const startTemporaryDatabases_1 = require("./startTemporaryDatabases");
|
|
6
8
|
const dotenv_1 = require("dotenv");
|
|
7
9
|
const fs_1 = require("fs");
|
|
8
10
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
@@ -14,8 +16,8 @@ const usage = `Usage:
|
|
|
14
16
|
prostgles create <directory> [--skip-install]
|
|
15
17
|
prostgles upgrade [--config <directory>]
|
|
16
18
|
prostgles compose init [--config <directory>]
|
|
17
|
-
prostgles dev [--config <directory>]
|
|
18
|
-
prostgles start [--config <directory>]`;
|
|
19
|
+
prostgles dev [--config <directory>] [--temp-db]
|
|
20
|
+
prostgles start [--config <directory>] [--temp-db]`;
|
|
19
21
|
const getConfigPath = (args) => {
|
|
20
22
|
const configIndex = args.indexOf("--config");
|
|
21
23
|
if (configIndex === -1)
|
|
@@ -88,12 +90,11 @@ const validateEnvironmentSetup = (configPath) => {
|
|
|
88
90
|
return environment;
|
|
89
91
|
};
|
|
90
92
|
const serverEntryPath = path_1.default.join(__dirname, "..", "cliServer.js");
|
|
91
|
-
const runServer = (configPath, mode) => (0, child_process_1.spawn)(process.execPath, [serverEntryPath], {
|
|
93
|
+
const runServer = (configPath, mode, environment) => (0, child_process_1.spawn)(process.execPath, [serverEntryPath], {
|
|
92
94
|
cwd: configPath,
|
|
93
95
|
stdio: "inherit",
|
|
94
96
|
env: {
|
|
95
|
-
...
|
|
96
|
-
...process.env,
|
|
97
|
+
...environment,
|
|
97
98
|
NODE_ENV: mode,
|
|
98
99
|
PROSTGLES_UI_CONFIG: configPath,
|
|
99
100
|
},
|
|
@@ -109,39 +110,98 @@ const watchConfig = (configPath, onChange) => {
|
|
|
109
110
|
visit(path_1.default.join(configPath, cliTemplateFiles_1.srcFolderName));
|
|
110
111
|
return () => watchers.forEach((watcher) => watcher.close());
|
|
111
112
|
};
|
|
112
|
-
const run = async (configPath, isDev) => {
|
|
113
|
-
const
|
|
113
|
+
const run = async (configPath, isDev, temporary) => {
|
|
114
|
+
const configuredEnvironment = temporary ? undefined : validateEnvironmentSetup(configPath);
|
|
115
|
+
const environment = configuredEnvironment ?? {
|
|
116
|
+
...getConfigEnvironment(configPath),
|
|
117
|
+
...process.env,
|
|
118
|
+
};
|
|
114
119
|
(0, fs_1.mkdirSync)(path_1.default.join(configPath, cliTemplateFiles_1.generatedFolderName), { recursive: true });
|
|
115
120
|
await (0, compileSchemaConfigProject_1.compileSchemaConfigProject)(configPath);
|
|
116
|
-
|
|
121
|
+
const shutdown = new AbortController();
|
|
122
|
+
const onSignal = () => shutdown.abort();
|
|
123
|
+
process.once("SIGINT", onSignal);
|
|
124
|
+
process.once("SIGTERM", onSignal);
|
|
125
|
+
const databases = temporary ?
|
|
126
|
+
await (0, startTemporaryDatabases_1.startTemporaryDatabases)({
|
|
127
|
+
configPath,
|
|
128
|
+
configId: getExistingConfigId(configPath),
|
|
129
|
+
logPath: path_1.default.join(configPath, ".prostgles/test-logs", `${Date.now()}-${(0, node_crypto_1.randomBytes)(4).toString("hex")}.postgres.log`),
|
|
130
|
+
})
|
|
131
|
+
: undefined;
|
|
132
|
+
if (databases) {
|
|
133
|
+
environment.PROSTGLES_STATE_DATABASE_URL = databases.state.url;
|
|
134
|
+
environment.PROSTGLES_DATABASE_URL = databases.project.url;
|
|
135
|
+
environment.PROSTGLES_UI_HOST = "127.0.0.1";
|
|
136
|
+
environment.PRGL_USERNAME ||= "admin";
|
|
137
|
+
if (!environment.PRGL_PASSWORD) {
|
|
138
|
+
environment.PRGL_PASSWORD = (0, node_crypto_1.randomBytes)(24).toString("base64url");
|
|
139
|
+
console.log(`Temporary admin login: ${environment.PRGL_USERNAME} / ${environment.PRGL_PASSWORD}`);
|
|
140
|
+
}
|
|
141
|
+
console.log("Using temporary databases. Data is deleted when this command stops.");
|
|
142
|
+
}
|
|
143
|
+
else if (configuredEnvironment) {
|
|
144
|
+
await (0, ensureCliDatabases_1.ensureCliDatabases)(configuredEnvironment);
|
|
145
|
+
}
|
|
117
146
|
let server;
|
|
118
147
|
let restarting = false;
|
|
148
|
+
let stopping = false;
|
|
149
|
+
const isStopping = () => stopping;
|
|
150
|
+
let timer;
|
|
151
|
+
let closeWatchers;
|
|
119
152
|
const start = () => {
|
|
120
|
-
server = runServer(configPath, isDev ? "development" : "production");
|
|
153
|
+
server = runServer(configPath, isDev ? "development" : "production", environment);
|
|
154
|
+
server.once("error", (error) => {
|
|
155
|
+
console.error(error);
|
|
156
|
+
void cleanup(1);
|
|
157
|
+
});
|
|
121
158
|
server.once("exit", (code, signal) => {
|
|
122
|
-
if (!restarting &&
|
|
123
|
-
|
|
159
|
+
if (!restarting && !stopping)
|
|
160
|
+
void cleanup(code ?? (signal ? 1 : 0));
|
|
124
161
|
});
|
|
125
162
|
};
|
|
126
163
|
const stop = async () => {
|
|
127
164
|
const currentServer = server;
|
|
128
165
|
server = undefined;
|
|
129
|
-
if (!currentServer ||
|
|
166
|
+
if (!currentServer ||
|
|
167
|
+
currentServer.exitCode !== null ||
|
|
168
|
+
currentServer.signalCode !== null ||
|
|
169
|
+
!currentServer.pid)
|
|
130
170
|
return;
|
|
131
171
|
currentServer.kill("SIGTERM");
|
|
132
172
|
await new Promise((resolve) => currentServer.once("exit", resolve));
|
|
133
173
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
174
|
+
const cleanup = async (exitCode = 0) => {
|
|
175
|
+
if (isStopping())
|
|
176
|
+
return;
|
|
177
|
+
stopping = true;
|
|
178
|
+
if (timer)
|
|
179
|
+
clearTimeout(timer);
|
|
137
180
|
closeWatchers?.();
|
|
138
|
-
|
|
181
|
+
try {
|
|
182
|
+
await stop();
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
try {
|
|
186
|
+
await databases?.dispose();
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
console.error(error);
|
|
190
|
+
exitCode = 1;
|
|
191
|
+
}
|
|
192
|
+
process.exitCode = exitCode;
|
|
193
|
+
}
|
|
139
194
|
};
|
|
140
|
-
|
|
141
|
-
|
|
195
|
+
shutdown.signal.addEventListener("abort", () => void cleanup(), {
|
|
196
|
+
once: true,
|
|
197
|
+
});
|
|
198
|
+
if (shutdown.signal.aborted) {
|
|
199
|
+
await cleanup();
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
start();
|
|
142
203
|
if (!isDev)
|
|
143
204
|
return;
|
|
144
|
-
let timer;
|
|
145
205
|
const rebuild = () => {
|
|
146
206
|
if (timer)
|
|
147
207
|
clearTimeout(timer);
|
|
@@ -149,10 +209,13 @@ const run = async (configPath, isDev) => {
|
|
|
149
209
|
void (async () => {
|
|
150
210
|
try {
|
|
151
211
|
await (0, compileSchemaConfigProject_1.compileSchemaConfigProject)(configPath);
|
|
212
|
+
if (isStopping())
|
|
213
|
+
return;
|
|
152
214
|
restarting = true;
|
|
153
215
|
await stop();
|
|
154
216
|
restarting = false;
|
|
155
|
-
|
|
217
|
+
if (!isStopping())
|
|
218
|
+
start();
|
|
156
219
|
}
|
|
157
220
|
catch (error) {
|
|
158
221
|
console.error(error);
|
|
@@ -160,7 +223,13 @@ const run = async (configPath, isDev) => {
|
|
|
160
223
|
})();
|
|
161
224
|
}, 100);
|
|
162
225
|
};
|
|
163
|
-
|
|
226
|
+
try {
|
|
227
|
+
closeWatchers = watchConfig(configPath, rebuild);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
await cleanup(1);
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
164
233
|
};
|
|
165
234
|
const main = async () => {
|
|
166
235
|
const [command, ...args] = process.argv.slice(2);
|
|
@@ -182,7 +251,7 @@ const main = async () => {
|
|
|
182
251
|
return;
|
|
183
252
|
}
|
|
184
253
|
if (command === "dev" || command === "start") {
|
|
185
|
-
await run(getConfigPath(args), command === "dev");
|
|
254
|
+
await run(getConfigPath(args), command === "dev", args.includes("--temp-db"));
|
|
186
255
|
return;
|
|
187
256
|
}
|
|
188
257
|
throw new Error(usage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli/cli.ts"],"names":[],"mappings":";;;;AAEA,iDAAoE;AACpE,mCAA+B;AAC/B,2BAA6E;AAC7E,wDAAwB;AACxB,gGAA6F;AAC7F,yDAK4B;AAC5B,6DAA0D;AAC1D,6CAA0C;AAE1C,MAAM,KAAK,GAAG;;;;;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli/cli.ts"],"names":[],"mappings":";;;;AAEA,iDAAoE;AACpE,6CAA0C;AAC1C,uEAAoE;AACpE,mCAA+B;AAC/B,2BAA6E;AAC7E,wDAAwB;AACxB,gGAA6F;AAC7F,yDAK4B;AAC5B,6DAA0D;AAC1D,6CAA0C;AAE1C,MAAM,KAAK,GAAG;;;;;qDAKuC,CAAC;AAEtD,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,EAAE;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,WAAW,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClE,OAAO,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAEpE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACpC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,kBAAkB,CAAC;AAEzE,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;QAChD,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK;QAAE,MAAM,MAAM,CAAC,KAAK,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,WAAoB,EAAE,EAAE;IAChE,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,IAAI,IAAA,gBAAW,EAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,kCAAkC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,IAAA,uCAAoB,EAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAE/C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,kHAAkH,CAC1J,CAAC;QACF,OAAO;IACT,CAAC;IAED,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,wDAAwD,UAAU,iGAAiG,CACpK,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACjD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAEjE,CAAC;IACF,OAAO,WAAW,CAChB,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI;QACpB,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,EAAE;IAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAA,sCAAmB,EAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CACT,uDAAuD,UAAU,oFAAoF,CACtJ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,EAAE;IAClD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,IAAA,eAAU,EAAC,eAAe,CAAC,CAAC,CAAC;QAChC,IAAA,cAAK,EAAC,IAAA,iBAAY,EAAC,eAAe,CAAC,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACtD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CACV,kCAAkC,eAAe,+DAA+D,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,WAGN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAEnE,MAAM,SAAS,GAAG,CAChB,UAAkB,EAClB,IAAkC,EAClC,WAA8B,EAC9B,EAAE,CACF,IAAA,qBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACzC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE;QACH,GAAG,WAAW;QACd,QAAQ,EAAE,IAAI;QACd,mBAAmB,EAAE,UAAU;KAChC;CACF,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,QAAoB,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,IAAA,UAAK,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAW,EAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;aACvE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;IACF,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gCAAa,CAAC,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,UAAkB,EAAE,KAAc,EAAE,SAAkB,EAAE,EAAE;IAC3E,MAAM,qBAAqB,GACzB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,qBAAqB,IAAI;QAC3C,GAAG,oBAAoB,CAAC,UAAU,CAAC;QACnC,GAAG,OAAO,CAAC,GAAG;KACf,CAAC;IACF,IAAA,cAAS,EAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sCAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,IAAA,uDAA0B,EAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClC,MAAM,SAAS,GACb,SAAS,CAAC,CAAC;QACT,MAAM,IAAA,iDAAuB,EAAC;YAC5B,UAAU;YACV,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC;YACzC,OAAO,EAAE,cAAI,CAAC,IAAI,CAChB,UAAU,EACV,sBAAsB,EACtB,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAC/D;SACF,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,4BAA4B,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/D,WAAW,CAAC,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3D,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAC5C,WAAW,CAAC,aAAa,KAAK,OAAO,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/B,WAAW,CAAC,aAAa,GAAG,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CACT,0BAA0B,WAAW,CAAC,aAAa,MAAM,WAAW,CAAC,aAAa,EAAE,CACrF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CACT,qEAAqE,CACtE,CAAC;IACJ,CAAC;SAAM,IAAI,qBAAqB,EAAE,CAAC;QACjC,MAAM,IAAA,uCAAkB,EAAC,qBAAqB,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAgC,CAAC;IACrC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;IAClC,IAAI,KAAiC,CAAC;IACtC,IAAI,aAAuC,CAAC;IAC5C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,GAAG,SAAS,CAChB,UAAU,EACV,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EACpC,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;gBAAE,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC;QACnB,IACE,CAAC,aAAa;YACd,aAAa,CAAC,QAAQ,KAAK,IAAI;YAC/B,aAAa,CAAC,UAAU,KAAK,IAAI;YACjC,CAAC,aAAa,CAAC,GAAG;YAElB,OAAO;QACT,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE;QACrC,IAAI,UAAU,EAAE;YAAE,OAAO;QACzB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,aAAa,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,SAAS,EAAE,OAAO,EAAE,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,QAAQ,GAAG,CAAC,CAAC;YACf,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,EAAE;QAC9D,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,KAAK,EAAE,CAAC;IAER,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,IAAA,uDAA0B,EAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,UAAU,EAAE;wBAAE,OAAO;oBACzB,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM,IAAI,EAAE,CAAC;oBACb,UAAU,GAAG,KAAK,CAAC;oBACnB,IAAI,CAAC,UAAU,EAAE;wBAAE,KAAK,EAAE,CAAC;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,aAAa,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAA,uBAAU,EAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC7C,MAAM,GAAG,CACP,aAAa,CAAC,IAAI,CAAC,EACnB,OAAO,KAAK,KAAK,EACjB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3B,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -231,7 +231,7 @@ const getCliTemplateFiles = ({ configId, environmentDefaults, }) => ({
|
|
|
231
231
|
PROSTGLES_DOCKER_DB_PASSWORD=${environmentDefaults?.PROSTGLES_DOCKER_DB_PASSWORD ?? (0, crypto_1.randomBytes)(24).toString("base64url")}
|
|
232
232
|
|
|
233
233
|
# Optional test-only override. By default npm test builds DB.Dockerfile.
|
|
234
|
-
# PROSTGLES_TEST_POSTGRES_IMAGE=postgis/postgis:17-3.
|
|
234
|
+
# PROSTGLES_TEST_POSTGRES_IMAGE=postgis/postgis:17-3.6-alpine`,
|
|
235
235
|
});
|
|
236
236
|
const readCliAsset = (filename) => {
|
|
237
237
|
const filePath = (0, path_1.join)(__dirname, filename);
|
|
@@ -463,7 +463,7 @@ const schemaConfigGuidance = {
|
|
|
463
463
|
databaseConfig: "Use `databaseConfig` for host-managed database features such as file storage and REST access.",
|
|
464
464
|
functions: "Use top-level `functions` for explicit workflow actions, privileged operations, and server-only business logic. Prefer built-in table insert/edit forms for ordinary CRUD instead of wrapping each insert or update in a function.",
|
|
465
465
|
id: "Keep `id` stable because it identifies the deployed configuration.",
|
|
466
|
-
joins: "Omit `joins` and use inferred foreign-key joins by default, including composite foreign keys and junction tables. The top-level `joins` option is experimental; do not enumerate existing FK relationships. An explicit path with
|
|
466
|
+
joins: "Omit `joins` and use inferred foreign-key joins by default, including composite foreign keys and junction tables. The top-level `joins` option is experimental; do not enumerate existing FK relationships. An explicit path with `on` selects a known relationship; it does not define a new non-FK join. When a permission filter requires a non-FK relationship, declare only that relationship and verify the resolved server retains other inferred FK joins. Older servers suppress inferred joins involving either custom-join table; fix/upgrade the source package instead of enumerating the schema's joins.",
|
|
467
467
|
onInitSQL: "Use `onInitSQL` only for SQL initialization that cannot be expressed by `tableConfig`.",
|
|
468
468
|
onMount: "Use `onMount` for startup integration work and return cleanup logic when resources are opened.",
|
|
469
469
|
services: "Register Docker-backed runtimes with `services` so Prostgles can expose and control them.",
|
|
@@ -541,11 +541,19 @@ const getCliAgentsFile = () => `
|
|
|
541
541
|
- Use semantic names ending in \`*.function.ts\`, \`*.tableConfig.ts\`, \`*.tableOptions.ts\`, and \`*.tableHooks.ts\`. Examples: \`deployProject.function.ts\`, \`orders.tableConfig.ts\`, \`customers.tableOptions.ts\`, and \`users.tableHooks.ts\`.
|
|
542
542
|
- The generated ESLint config enforces these suffixes inside their corresponding folders. Run \`npm run lint\` before committing.
|
|
543
543
|
|
|
544
|
+
## Local development
|
|
545
|
+
|
|
546
|
+
- For disposable development or UI checks, use \`npm run dev -- --temp-db\` or \`npm start -- --temp-db\`. The CLI manages PostgreSQL using the same helper as tests; no database URLs or manual Docker commands are needed. Docker must be available.
|
|
547
|
+
- Each command creates fresh state and project databases, overrides database URLs from the environment, and removes its container on exit. Dev reloads keep the databases until the command stops. Use normal dev/start with configured URLs only when persistent data is required.
|
|
548
|
+
- PostgreSQL logs are saved under \`.prostgles/test-logs/\`; the CLI prints the exact path. Logs remain after cleanup. Inspect these logs when database setup fails instead of starting another container.
|
|
549
|
+
|
|
544
550
|
## Tests
|
|
545
551
|
|
|
552
|
+
- Do not manually start PostgreSQL containers or supply database credentials for tests. Run the existing \`npm test\` workflow directly; it provisions and cleans up its own databases. Build and lint commands do not need a database.
|
|
546
553
|
- Run \`npm test\` before committing. Tests use \`@prostgles/app/testing\` to start the real app against fresh state and project databases without opening the UI.
|
|
547
554
|
- Keep deployment tests in \`tests/\`. Each call to \`createTestDeployment\` uses the current app directory and its \`DB.Dockerfile\` when present, starts a disposable PostgreSQL Docker container bound only to \`127.0.0.1\`, creates fresh state and project databases, and removes the container during cleanup. Set \`PROSTGLES_TEST_POSTGRES_IMAGE\` only to override the Dockerfile.
|
|
548
555
|
- \`npm test\` automatically saves each test deployment's stdout and stderr to \`.prostgles/test-logs/<timestamp>-<random>.log\` relative to the app root. Logs remain after cleanup; the exact file is returned as \`deployment.logPath\` and included in deployment startup errors. No custom logging command or output redirection is needed to capture deployment logs.
|
|
556
|
+
- PostgreSQL stdout and stderr are also saved to \`deployment.databaseLogPath\` (the app log path plus \`.postgres.log\`), including database startup failures. These logs remain after cleanup.
|
|
549
557
|
- After a test failure, inspect the existing logs before rerunning tests or requesting custom commands. Use \`ls -t .prostgles/test-logs/\` to find recent logs, then \`tail -n 200 .prostgles/test-logs/<filename>\` or \`rg -n -i 'error|failed' .prostgles/test-logs/<filename>\`. Logs may be large; do not read an entire log unless its size is known to be small.
|
|
550
558
|
- These files contain deployment output, not the npm/build/test-runner output. Check the test command's terminal output for lint, TypeScript, assertion, or Docker setup failures. Failures before the deployment starts may not create a log file.
|
|
551
559
|
- If the deployment fixture blocks a valid scenario, inspect \`deployment.logPath\` and report the issue against \`@prostgles/app\`; do not weaken the app or its assertions to work around the fixture.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const startTemporaryDatabases: ({ configPath, configId, postgresImage, startupTimeoutMs, logPath, }: {
|
|
2
|
+
logPath: string;
|
|
3
|
+
configPath: string;
|
|
4
|
+
configId: string;
|
|
5
|
+
postgresImage?: string;
|
|
6
|
+
startupTimeoutMs?: number;
|
|
7
|
+
}) => Promise<{
|
|
8
|
+
dispose: () => Promise<void>;
|
|
9
|
+
project: {
|
|
10
|
+
name: string;
|
|
11
|
+
url: string;
|
|
12
|
+
};
|
|
13
|
+
state: {
|
|
14
|
+
name: string;
|
|
15
|
+
url: string;
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=startTemporaryDatabases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTemporaryDatabases.d.ts","sourceRoot":"","sources":["../../../../src/cli/startTemporaryDatabases.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,uBAAuB,GAAU,qEAM3C;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;;;;;;;;;;EAkJA,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startTemporaryDatabases = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
10
|
+
const pg_1 = require("pg");
|
|
11
|
+
const TEST_DATABASE_NAMESPACE = "prostgles_test_";
|
|
12
|
+
const DEFAULT_POSTGRES_IMAGE = "postgis/postgis:17-3.6-alpine";
|
|
13
|
+
const START_TIMEOUT_MS = 60_000;
|
|
14
|
+
const startTemporaryDatabases = async ({ configPath, configId, postgresImage, startupTimeoutMs, logPath, }) => {
|
|
15
|
+
await (0, promises_1.mkdir)(node_path_1.default.dirname(logPath), { recursive: true });
|
|
16
|
+
const configuredImage = postgresImage ?? process.env.PROSTGLES_TEST_POSTGRES_IMAGE;
|
|
17
|
+
const dbDockerfile = node_path_1.default.join(configPath, "DB.Dockerfile");
|
|
18
|
+
let image = configuredImage;
|
|
19
|
+
if (!image && (0, node_fs_1.existsSync)(dbDockerfile)) {
|
|
20
|
+
const imageTag = `prostgles-test-${validatePrefix(configId).replaceAll("_", "-") || "app"}-db`;
|
|
21
|
+
const buildArgs = [
|
|
22
|
+
"build",
|
|
23
|
+
"--quiet",
|
|
24
|
+
"--file",
|
|
25
|
+
dbDockerfile,
|
|
26
|
+
"--tag",
|
|
27
|
+
imageTag,
|
|
28
|
+
configPath,
|
|
29
|
+
];
|
|
30
|
+
const buildResult = await runDocker(buildArgs);
|
|
31
|
+
if (buildResult.exitCode !== 0) {
|
|
32
|
+
throw getDockerError(buildArgs, buildResult);
|
|
33
|
+
}
|
|
34
|
+
image = imageTag;
|
|
35
|
+
}
|
|
36
|
+
image ??= DEFAULT_POSTGRES_IMAGE;
|
|
37
|
+
const prefix = validatePrefix(configId);
|
|
38
|
+
const runId = (0, node_crypto_1.randomBytes)(6).toString("hex");
|
|
39
|
+
const baseName = `${TEST_DATABASE_NAMESPACE}${prefix ? `${prefix}_` : ""}${runId}`;
|
|
40
|
+
const stateName = `${baseName}_state`;
|
|
41
|
+
const projectName = `${baseName}_project`;
|
|
42
|
+
const username = "prostgles_test";
|
|
43
|
+
const password = (0, node_crypto_1.randomBytes)(24).toString("base64url");
|
|
44
|
+
const containerName = `prostgles-test-${prefix ? `${prefix.replaceAll("_", "-")}-` : ""}${runId}`;
|
|
45
|
+
const runArgs = [
|
|
46
|
+
"run",
|
|
47
|
+
"--detach",
|
|
48
|
+
"--name",
|
|
49
|
+
containerName,
|
|
50
|
+
"--label",
|
|
51
|
+
"prostgles.test-deployment=true",
|
|
52
|
+
"--publish",
|
|
53
|
+
"127.0.0.1::5432",
|
|
54
|
+
"--env",
|
|
55
|
+
`POSTGRES_USER=${username}`,
|
|
56
|
+
"--env",
|
|
57
|
+
`POSTGRES_PASSWORD=${password}`,
|
|
58
|
+
"--env",
|
|
59
|
+
"POSTGRES_DB=postgres",
|
|
60
|
+
image,
|
|
61
|
+
];
|
|
62
|
+
const runResult = await runDocker(runArgs);
|
|
63
|
+
if (runResult.exitCode !== 0)
|
|
64
|
+
throw getDockerError(runArgs, runResult);
|
|
65
|
+
const logFile = await (0, promises_1.open)(logPath, "w").catch(async (error) => {
|
|
66
|
+
await runDocker(["rm", "--force", containerName]);
|
|
67
|
+
throw error;
|
|
68
|
+
});
|
|
69
|
+
const logProcess = (0, node_child_process_1.spawn)("docker", ["logs", "--follow", containerName], {
|
|
70
|
+
stdio: ["ignore", logFile.fd, logFile.fd],
|
|
71
|
+
});
|
|
72
|
+
const logsClosed = new Promise((resolve) => {
|
|
73
|
+
logProcess.once("close", () => resolve());
|
|
74
|
+
});
|
|
75
|
+
logProcess.on("error", console.error);
|
|
76
|
+
await logFile.close();
|
|
77
|
+
console.log(`PostgreSQL log file: ${logPath}`);
|
|
78
|
+
const dispose = async () => {
|
|
79
|
+
// Stop before collecting the final logs so shutdown messages are retained.
|
|
80
|
+
try {
|
|
81
|
+
await runDocker(["stop", "--time", "5", containerName]);
|
|
82
|
+
logProcess.kill();
|
|
83
|
+
await logsClosed;
|
|
84
|
+
const logs = await runDocker(["logs", containerName]);
|
|
85
|
+
if (logs.exitCode !== 0)
|
|
86
|
+
throw getDockerError(["logs"], logs);
|
|
87
|
+
await (0, promises_1.writeFile)(logPath, logs.stdout + logs.stderr);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
logProcess.kill();
|
|
91
|
+
await removeContainer(containerName);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
const portArgs = ["port", containerName, "5432/tcp"];
|
|
96
|
+
const portResult = await runDocker(portArgs);
|
|
97
|
+
if (portResult.exitCode !== 0)
|
|
98
|
+
throw getDockerError(portArgs, portResult);
|
|
99
|
+
const portText = portResult.stdout.trim();
|
|
100
|
+
if (!portText.startsWith("127.0.0.1:") || portText.includes("\n")) {
|
|
101
|
+
throw new Error(`Refusing a PostgreSQL test container not bound exclusively to 127.0.0.1: ${portText}`);
|
|
102
|
+
}
|
|
103
|
+
const separatorIndex = portText.lastIndexOf(":");
|
|
104
|
+
const port = Number(portText.slice(separatorIndex + 1));
|
|
105
|
+
if (!Number.isInteger(port) || port <= 0) {
|
|
106
|
+
throw new Error(`Docker returned an invalid PostgreSQL port: ${portText}`);
|
|
107
|
+
}
|
|
108
|
+
const maintenanceUrl = getDatabaseUrl(port, username, password, "postgres");
|
|
109
|
+
const startedAt = Date.now();
|
|
110
|
+
let lastConnectionError;
|
|
111
|
+
let maintenance;
|
|
112
|
+
while (Date.now() - startedAt < (startupTimeoutMs ?? START_TIMEOUT_MS)) {
|
|
113
|
+
const candidate = new pg_1.Client({ connectionString: maintenanceUrl });
|
|
114
|
+
try {
|
|
115
|
+
await candidate.connect();
|
|
116
|
+
maintenance = candidate;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
lastConnectionError = error;
|
|
121
|
+
await candidate.end().catch(() => undefined);
|
|
122
|
+
await delay(200);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (!maintenance) {
|
|
126
|
+
const logs = await runDocker(["logs", containerName]);
|
|
127
|
+
throw new Error(`Timed out waiting for the test PostgreSQL container.\n${logs.stdout}${logs.stderr}`, { cause: lastConnectionError });
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
await maintenance.query(`CREATE DATABASE "${stateName}"`);
|
|
131
|
+
await maintenance.query(`CREATE DATABASE "${projectName}"`);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
await maintenance.end();
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
dispose,
|
|
138
|
+
project: {
|
|
139
|
+
name: projectName,
|
|
140
|
+
url: getDatabaseUrl(port, username, password, projectName),
|
|
141
|
+
},
|
|
142
|
+
state: {
|
|
143
|
+
name: stateName,
|
|
144
|
+
url: getDatabaseUrl(port, username, password, stateName),
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
await dispose().catch(() => undefined);
|
|
150
|
+
throw new Error(`Temporary PostgreSQL setup failed. Log file: ${logPath}`, {
|
|
151
|
+
cause: error,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
exports.startTemporaryDatabases = startTemporaryDatabases;
|
|
156
|
+
const runCommand = async (command, args) => await new Promise((resolve, reject) => {
|
|
157
|
+
const child = (0, node_child_process_1.spawn)(command, args, { stdio: "pipe" });
|
|
158
|
+
let stdout = "";
|
|
159
|
+
let stderr = "";
|
|
160
|
+
child.stdout.on("data", (chunk) => {
|
|
161
|
+
stdout += chunk.toString();
|
|
162
|
+
});
|
|
163
|
+
child.stderr.on("data", (chunk) => {
|
|
164
|
+
stderr += chunk.toString();
|
|
165
|
+
});
|
|
166
|
+
child.once("error", reject);
|
|
167
|
+
child.once("close", (exitCode) => {
|
|
168
|
+
resolve({ exitCode: exitCode ?? 1, stderr, stdout });
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
const runDocker = async (args) => {
|
|
172
|
+
const result = await runCommand("docker", args).catch((error) => {
|
|
173
|
+
throw new Error("Docker is required for Prostgles temporary databases. Install Docker and ensure its daemon is running.", { cause: error });
|
|
174
|
+
});
|
|
175
|
+
return result;
|
|
176
|
+
};
|
|
177
|
+
const getDockerError = (args, result) => new Error(`docker ${args[0] ?? "command"} failed with exit code ${result.exitCode}: ${result.stderr.trim() || result.stdout.trim()}`);
|
|
178
|
+
const validatePrefix = (configId) => configId
|
|
179
|
+
.toLowerCase()
|
|
180
|
+
.replace(/[^a-z0-9_]/g, "_")
|
|
181
|
+
.slice(0, 20);
|
|
182
|
+
const getDatabaseUrl = (port, username, password, databaseName) => {
|
|
183
|
+
const url = new URL("postgresql://127.0.0.1");
|
|
184
|
+
url.username = username;
|
|
185
|
+
url.password = password;
|
|
186
|
+
url.port = String(port);
|
|
187
|
+
url.pathname = `/${databaseName}`;
|
|
188
|
+
return url.toString();
|
|
189
|
+
};
|
|
190
|
+
const delay = async (milliseconds) => await new Promise((resolve) => setTimeout(resolve, milliseconds));
|
|
191
|
+
const removeContainer = async (containerName) => {
|
|
192
|
+
const args = ["rm", "--force", containerName];
|
|
193
|
+
const result = await runDocker(args);
|
|
194
|
+
if (result.exitCode !== 0 && !result.stderr.includes("No such container")) {
|
|
195
|
+
throw getDockerError(args, result);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=startTemporaryDatabases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTemporaryDatabases.js","sourceRoot":"","sources":["../../../../src/cli/startTemporaryDatabases.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,8 @@ export type TestDeployment<Schema = void, Functions extends ClientFunctionHandle
|
|
|
33
33
|
projectDatabaseName: string;
|
|
34
34
|
/** File containing deployment stdout and stderr. */
|
|
35
35
|
logPath: string;
|
|
36
|
+
/** PostgreSQL output, retained after cleanup. */
|
|
37
|
+
databaseLogPath: string;
|
|
36
38
|
connectStateAs: (userKey: string) => Promise<TestDeploymentClient<void, ClientFunctionHandler, UserLike>>;
|
|
37
39
|
connectProjectAs: (userKey: string) => Promise<TestDeploymentClient<Schema, Functions, User>>;
|
|
38
40
|
dispose: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTestDeployment.d.ts","sourceRoot":"","sources":["../../../../../src/cli/testing/createTestDeployment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createTestDeployment.d.ts","sourceRoot":"","sources":["../../../../../src/cli/testing/createTestDeployment.ts"],"names":[],"mappings":"AAKA,OAAkB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAM5B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAC9B,MAAM,GAAG,IAAI,EACb,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,EAC/D,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAC9B,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG;IAC3C,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,CACxB,MAAM,GAAG,IAAI,EACb,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,EAC/D,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAC9B;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CACd,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAgHF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,GAAG,IAAI,EACb,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,EAC/D,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAChC,kFAQC,2BAA2B,KAAG,OAAO,CACtC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAsNxC,CAAC"}
|